Я хотел бы объединить два кадра данных на основе столбцов id
и time
. Я думаю, что пример более эффективен, чтобы показать, что я хочу сделать:
library(dplyr)
df1 <- tibble(id = c("a", "a", "b", "b", "c", "c"),
time = c(1, 2, 1, 2, 1, 2),
val1 = c(2000:2005))
id time val1
<chr> <dbl> <int>
1 a 1 2000
2 a 2 2001
3 b 1 2002
4 b 2 2003
5 c 1 2004
6 c 2 2005
df2 <- tibble(id = c("a", "a", "b", "b", "c", "c"),
time = c(1, 2, 1, 2, 2, 3),
val2 = c(2000:2005))
id time val2
<chr> <dbl> <int>
1 a 1 2000
2 a 2 2001
3 b 1 2002
4 b 2 2003
5 c 2 2004
6 c 3 2005
id time val1 val2
<chr> <dbl> <dbl> <dbl>
1 a 1 2000 2000
2 a 2 2001 2001
3 a 3 NA NA
4 b 1 2002 2002
5 b 2 2003 2003
6 b 3 NA NA
7 c 1 2004 NA
8 c 2 2005 2004
9 c 3 NA 2005
По сути, я хочу генерировать строки с time
, равным 3 для каждого id
, а не только с одним периодом, равным 3. Я хотел бы получить решение быть настолько коротким, насколько это возможно (и желательно на основе dplyr
функций, но прежде всего нужно скомпилировать код).
Конечно, этот вопрос уже задавался, но я не могу найти решение.
Есть идеи?