Question

Supposons que mon apparence de données comme ceci:

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

Je veux être en mesure de sous-ensemble par la Analyte et une correspondance partielle à la date (à savoir, je veux juste l'année). J'ai essayé, mais je sais que ce n'est pas tout à fait raison.

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

Toutes les suggestions?

Était-ce utile?

La solution

Pour ce problème, je voudrais aller à l'approche de la réponse de l'apprenti file d'attente d'extraction de l'année à partir de la date plutôt que de faire de la chaîne générique correspondant. Je suggère:

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

Mais si vous aviez vraiment faire regexp correspondant, vous pouvez utiliser grepl qui retourne un vecteur logique plutôt que grep qui retourne un vecteur d'indices.

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

Autres conseils

Une façon utilisant littéraux date:

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

Une autre façon en utilisant format

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

Realize cette question a été posée tout à fait il y a quelques années, devrait, espérons aider quelqu'un à l'avenir.

dplyr occasion pour sous-réglage en utilisant des conditions multiples, et vérifier l'année après la conversion en type de date

library(dplyr)

data %>% filter( Analyte=="ATRAZINE" & format(as.Date(Date,format = "%m/%d/%Y"),"%Y") == "2006") 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top