假设我的数据看起来是这样的:

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") 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top