2015-02-02 2 views
1

У меня есть кадр данных с несколькими переменными, среди которых - дата (df $ date) в формате даты.R Дата не в списке символов

У меня также есть список с датами в формате символов (например, «2013-07-14»). Мне нужно удалить даты списка из фрейма данных.

Я пробовал следующее, но ни один из них не работает.

datestoremove <- as.character(datestoremove) #from list to character format 
require(lubridate) 
test1 <- ymd(datestoremove) #yields NA 


grepl(df$date[3600],datestoremove) # Try to identify character pattern. Doesn't work as it yields FALSE even when it is true (I know df$date[3600] is in the list. 

datestoremove <- strptime(datestoremove, format = "%Y-%m-%d") # Passing datestoremove to date format. Unsucessfully. 
test1 <- strptime(datestoremove,"%Y-%m-%d") 

test2 <- df[which(!(df$date[3600] %in% datestoremove)),] #Seems to work but it does not transfer the valid rows to test2. So test2 is empty. 
test3 <- subset(df, !(df$date %in% datestoremove)) 

данные:

df <- structure(list(date = structure(c(15930, 15931, 15931, 15931, 
    15931, 15931), class = "Date"), st1count = c(259L, 4L, 36L, 54L, 
    67L, 56L)), .Names = c("date", "st1count"), class = "data.frame", row.names = 3420:3425) 

datestoremove <- list(structure(c(15931, 15979, 16252, 16322), class = "Date")) 
+0

@NicE это работает! Я думаю, это двойная скобка '[[]]', правильно? Если вы ответите, я бы выбрал его! – user3507584

+0

да, он получает первый элемент списка 'datestoremove', который является вектором дат, которые вы хотите удалить. – NicE

ответ

2

Вы можете попробовать запустить это, без преобразования списка персонажей:

df[!(df$date %in% datestoremove[[1]]),] 
Смежные вопросы