Domanda

Supponiamo che i miei dati siano simili a questi:

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

Voglio essere in grado di sottoimpostare l'analita e una corrispondenza parziale sulla data (vale a dire voglio solo l'anno).Ci ho provato, ma so che non è del tutto corretto.

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

Eventuali suggerimenti?

È stato utile?

Soluzione

Per questo problema vorrei andare con l'approccio in risposta Apprendista Coda di estrarre l'anno dalla data piuttosto che fare generica stringa corrispondente. Vorrei suggerire:

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

Ma se davvero doveva fare corrispondenza regexp, si potrebbe usare grepl che restituisce un vettore logica piuttosto che grep che restituisce un vettore di indici.

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

Altri suggerimenti

Un modo con data letterali:

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

Un altro modo utilizzando format

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

Renditi conto che questa domanda è stata posta alcuni anni fa, si spera che possa aiutare qualcuno in futuro.

Utilizzato dplyr per l'impostazione secondaria utilizzando più condizioni e controllando l'anno dopo la conversione nel tipo di data

library(dplyr)

data %>% filter( Analyte=="ATRAZINE" & format(as.Date(Date,format = "%m/%d/%Y"),"%Y") == "2006") 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top