подмножество данных. Сделайте с несколькими условиями
Вопрос
Предположим, мои данные выглядят так:
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]
Но если вам действительно пришлось делать сопоставление Regexp, вы можете использовать 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']
Понимаю, что этот вопрос был задан несколько лет назад, надеюсь, должен помочь кому-нибудь в будущем.
Используется DPYRYR для подстрастройки с использованием нескольких условий и проверки года после преобразования в тип даты
library(dplyr)
data %>% filter( Analyte=="ATRAZINE" & format(as.Date(Date,format = "%m/%d/%Y"),"%Y") == "2006")