У меня есть кадр данных с столбцом даты и некоторыми другими столбцами значений. Я хотел бы извлечь из кадра данных те строки, в которых столбец даты соответствует любому из элементов в уже существующем списке дат. Например, используя список из одного элемента, дата "2012-01-01" выведет строку с датой "2012-01-01" из фрейма данных.
Для чисел, я думаю, я знаю, как соответствовать значениям. Этот код:
testdf <- data.frame(mydate = seq(as.Date('2012-01-01'),
as.Date('2012-01-10'), by = 'day'),
col1 = 1:10,
col2 = 11:20,
col3 = 21:30)
... создает этот фрейм данных:
mydate col1 col2 col3
1 2012-01-01 1 11 21
2 2012-01-02 2 12 22
3 2012-01-03 3 13 23
4 2012-01-04 4 14 24
5 2012-01-05 5 15 25
6 2012-01-06 6 16 26
7 2012-01-07 7 17 27
8 2012-01-08 8 18 28
9 2012-01-09 9 19 29
10 2012-01-10 10 20 30
Я могу это сделать:
testdf[which(testdf$col3 %in% c('25','29')),]
который производит это:
mydate col1 col2 col3
5 2012-01-05 5 15 25
9 2012-01-09 9 19 29
Я могу обобщить это на список следующим образом:
myvalues <- c('25','29')
testdf[which(testdf$col3 %in% myvalues),]
И я получаю тот же результат. Поэтому я подумал, что смогу использовать тот же подход для дат, но, похоже, я ошибался. Выполнение этого действия:
testdf[which(testdf$mydate %in% c('2012-01-05','2012-01-09')),]
Получает это:
[1] mydate col1 col2 col3
<0 rows> (or 0-length row.names)
И появление дат в их собственном списке - это конечная цель - тоже не помогает. Я могу думать о том, как обойти это с помощью циклов или применения функции, но мне кажется, что должен быть более простой способ для того, что, вероятно, является довольно распространенным требованием. Неужели я снова пропустил что-то простое?
В: Как я могу подмножить те строки фрейма данных, у которых есть столбец даты, значения которого соответствуют одному из списка дат?