Я хотел бы объединить два кадра данных в соответствии с их датами, но они могут иметь разные даты. По сути, когда пара групп-дата не идеально совпадает, я хотел бы округлить даты так, чтобы значения во втором фрейме данных соответствовали значениям в первом с максимально возможной датой.
Чтобы быть более понятным Вот пример:
library(dplyr)
data1 <- tibble(
group = rep(c("A", "B"), each = 3),
date = c(2002, 2005, 2010, 2001, 2004, 2009),
variable_1 = c("Thing_1", "Thing_1", "Thing_2", "Thing_1", "Thing_2", "Thing_1")
)
# A tibble: 6 x 3
group date variable_1
<chr> <dbl> <chr>
1 A 2002 Thing_1
2 A 2005 Thing_1
3 A 2010 Thing_2
4 B 2001 Thing_1
5 B 2004 Thing_2
6 B 2009 Thing_1
data2 <- tibble(
group = rep(c("A", "B"), each = 2),
date = c(2007, 2008, 2001, 2010),
variable_2 = c("Else_1", "Else_2", "Else_2", "Else_1")
)
group date variable_2
<chr> <dbl> <chr>
1 A 2007 Else_1
2 A 2008 Else_2
3 B 2001 Else_2
4 B 2010 Else_1
Например, в группе А мы видим, что даты не совпадают: 2002, 2005 и 2010 годы для data1
; 2007 и 2008 для data2
. Поэтому, поскольку идеальное совпадение невозможно, я бы хотел «округлить» даты. Значение, когда data2$date
- 2007, должно совпадать с тем, где data1$date
- 2005, поскольку 2005 - самое близкое значение 2007 года. Аналогично, значение, когда data2$date
- 2008, должно совпадать с тем, где data1$date
это 2010.
То же самое для группы B.
Вот ожидаемый результат:
# A tibble: 6 x 4
group date variable_1 variable_2
<chr> <dbl> <chr> <chr>
1 A 2002 Thing_1 NA
2 A 2005 Thing_1 Else_1
3 A 2009 Thing_2 Else_2
4 B 2001 Thing_1 Else_2
5 B 2004 Thing_2 NA
6 B 2009 Thing_1 Else_1
Как я могу это сделать?