Pergunta

Suponha que meus dados se pareçam com o seguinte:

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

Quero poder subconjuntar pelo analito e uma correspondência parcial na data (ou seja, eu só quero o ano). Eu tenho tentado isso, mas sei que não está certo.

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

Alguma sugestão?

Foi útil?

Solução

Para esse problema, eu iria com a abordagem na resposta da fila de aprendizes de extrair o ano a partir da data, em vez de fazer a correspondência genérica de string. Eu sugeriria:

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

Mas se você realmente tivesse que fazer a correspondência regexp, você pode usar grepl que retorna um vetor lógico em vez de grep que retorna um vetor de índices.

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

Outras dicas

Uma maneira de usar literais de data:

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

Outra maneira de usar format

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

Perceba que essa pergunta foi feita há alguns anos, espero ajudar alguém no futuro.

Usado DPLYR para subconjunto usando várias condições e verificar o ano após a conversão em tipo de data

library(dplyr)

data %>% filter( Analyte=="ATRAZINE" & format(as.Date(Date,format = "%m/%d/%Y"),"%Y") == "2006") 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top