複数の条件を持つdata.frameをサブセットします
質問
私のデータが次のように見えるとします:
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)),]
助言がありますか?
解決
この問題については、一般的な文字列のマッチングを行うのではなく、日付から年を抽出するという見習いキューの答えのアプローチに取り組みます。私は提案します:
data[data$Analyte =="ATRAZINE"
& as.POSIXlt(data$Date, format="%m/%d/%Y")$year == 106]
しかし、あなたが本当にregexpマッチングをしなければならなかったなら、あなたは使用することができます grepl
これは、論理ベクトルではなく返されます grep
インデックスのベクトルを返します。
data[data$Analyte=="ATRAZINE" & grepl("2006",as.character(data$Date)),]
他のヒント
日付リテラルを使用する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']
この質問はかなり数年前に尋ねられていることを認識してください。
複数の条件を使用したサブセッティングにdplyrを使用し、日付タイプに変換した後の年をチェックする
library(dplyr)
data %>% filter( Analyte=="ATRAZINE" & format(as.Date(Date,format = "%m/%d/%Y"),"%Y") == "2006")
所属していません StackOverflow