题
假设我的数据看起来是这样的:
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]
但如果你真的不得不这样做正则表达式匹配,你可以使用grepl
它返回一个逻辑向量,而不是grep
返回索引的矢量。
data[data$Analyte=="ATRAZINE" & grepl("2006",as.character(data$Date)),]
其他提示
使用日期文字的一种方式:
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