3

私のデータが次のようになっているとします。

2372  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE    1.3 05/07/2006
9104  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE   0.34 07/23/2006
9212  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE   0.33 02/11/2007
2094  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE    1.4 05/06/2007
16763 Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE   0.61 05/11/2009
1076  Kansas KS2000111 HUMBOLDT, CITY OF METOLACHLOR   0.48 05/12/2002
1077  Kansas KS2000111 HUMBOLDT, CITY OF METOLACHLOR    0.3 05/07/2006

分析物と日付の部分一致(つまり、年だけが必要)でサブセット化できるようにしたい。私はこれを試してきましたが、それが正しくないことはわかっています。

 data[data$Analyte=="ATRAZINE" & grep("2006",as.character(data$Date)),]

助言がありますか?

4

3 に答える 3

3

この問題については、一般的な文字列の一致を行うのではなく、日付から年を抽出する Apprentice Queue の回答のアプローチを使用します。私は提案します:

data[data$Analyte =="ATRAZINE"
     & as.POSIXlt(data$Date, format="%m/%d/%Y")$year == 106]

しかし、本当に正規表現マッチングを行う必要がある場合は、インデックスのベクトルを返すのではgreplなく、論理ベクトルを返す which を使用できます。grep

data[data$Analyte=="ATRAZINE" & grepl("2006",as.character(data$Date)),]
于 2010-06-16T09:29:52.240 に答える
2

日付リテラルを使用する 1 つの方法:

data[data$Analyte =="ATRAZINE"
     & (data$Date >= '2006-01-01' & data$Date < '2007-01-01')]

使用する別の方法format

data[data$Analyte =="ATRAZINE"
     & format(data$Date, "%Y") == '2006']
于 2010-06-16T07:18:01.277 に答える