subset a data.frame with multiple conditions

那年仲夏 提交于 2019-11-28 10:32:09

For this problem I would go with the approach in Apprentice Queue's answer of extracting the year from the date rather than doing generic string matching. I would suggest:

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

But if you really had to do regexp matching, you could use grepl which returns a logical vector rather than grep which returns a vector of indices.

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

One way using date literals:

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

Another way using format

data[data$Analyte =="ATRAZINE"
     & format(data$Date, "%Y") == '2006']

Realize this question has been asked quite some years back, hopefully should help some one in the future.

Used dplyr for sub-setting using multiple conditions, and checking the year after converting into Date type

library(dplyr)

data %>% filter( Analyte=="ATRAZINE" & format(as.Date(Date,format = "%m/%d/%Y"),"%Y") == "2006") 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!