У меня есть фрейм данных с несколькими date
столбцами.
Index Measurement Date Measure.1 Date.1 Measure.2 Date.2 Measure.3 Date.3
1 1 56.0 2018-03-16 2 2018-03-23 12 2018-03-29 22.0 2018-04-05
2 2 56.0 2018-03-16 78 2018-03-23 41234 2018-03-29 12.0 2018-04-05
3 12 65.0 <NA> 54 2018-03-23 35 <NA> 323.0 2018-04-05
4 15 129.1 2018-03-16 78 2018-03-23 12 2018-03-29 2.0 2018-04-05
5 22 56.0 2018-03-16 786 2018-03-23 234 2018-03-29 21.0 <NA>
6 567 NA 2018-03-16 34 2018-03-23 4 2018-03-29 545.0 2018-04-21
7 75 5.0 2018-03-16 52 2018-03-23 3 2018-03-29 5.0 2018-04-05
8 563 12.0 2018-03-16 43 2018-03-23 34 2018-03-29 5.0 2018-04-05
9 436 12.0 2018-03-16 3 2018-03-23 123 2018-03-29 213.0 2018-04-05
10 34533 56.0 2018-03-16 43 2018-03-23 32 2018-03-29 5.0 2018-04-25
11 234234 76.0 2018-03-16 234 2018-03-31 324 2018-05-06 5.0 2018-04-05
12 6643 76.0 2018-03-16 23 2018-03-23 123 2018-03-29 0.2 2018-04-11
Вот код для загрузки моих данных (небольшой пример):
structure(list(Index = c(1L, 2L, 12L, 15L, 22L, 567L, 75L, 563L,
436L, 34533L, 234234L, 6643L), Measurement = c(56, 56, 65, 129.1,
56, NA, 5, 12, 12, 56, 76, 76), Date = structure(c(17606, 17606,
NA, 17606, 17606, 17606, 17606, 17606, 17606, 17606, 17606, 17606
), class = "Date"), Measure.1 = c(2L, 78L, 54L, 78L, 786L, 34L,
52L, 43L, 3L, 43L, 234L, 23L), Date.1 = structure(c(17613, 17613,
17613, 17613, 17613, 17613, 17613, 17613, 17613, 17613, 17621,
17613), class = "Date"), Measure.2 = c(12L, 41234L, 35L, 12L,
234L, 4L, 3L, 34L, 123L, 32L, 324L, 123L), Date.2 = structure(c(17619,
17619, NA, 17619, 17619, 17619, 17619, 17619, 17619, 17619, 17657,
17619), class = "Date"), Measure.3 = c(22, 12, 323, 2, 21, 545,
5, 5, 213, 5, 5, 0.2), Date.3 = structure(c(17626, 17626, 17626,
17626, NA, 17642, 17626, 17626, 17626, 17646, 17626, 17632), class = "Date")), .Names = c("Index",
"Measurement", "Date", "Measure.1", "Date.1", "Measure.2", "Date.2",
"Measure.3", "Date.3"), row.names = c(NA, -12L), class = "data.frame")
Мне нужно посмотреть на соседние Date
столбцы построчно , а разница между каждой соседней ячейкой даты должна составлять не более 9 дней и не менее 3 дней .
Я могу добиться этого следующим образом:
diffdate_table <- df[ , grep( "Date" , names( df ) ) ] %>% rowwise() %>% diff.Date
Вывод кода выше будет:
> diffdate_table
Date.1 Date.2 Date.3
1 7 days 6 days 7 days
2 7 days 6 days 7 days
3 NA days NA days NA days
4 7 days 6 days 7 days
5 7 days 6 days NA days
6 7 days 6 days 23 days
7 7 days 6 days 7 days
8 7 days 6 days 7 days
9 7 days 6 days 7 days
10 7 days 6 days 27 days
11 15 days 36 days -31 days
12 7 days 6 days 13 days
ВОПРОС .
Как извлечь Index
(столбец в указанном выше наборе данных) из тех строк, которые имеют по крайней мере одно различие, которое составляет более 9 дней и меньше 3, как рассчитано в diffdate_table?