我想为固定值范围(年份:2006-2010)之间的每个 ID(1,2,3)添加新行,同时保留预先存在的数据(大小列)。这是一个例子:
tibble::tribble(
~Year, ~ID, ~Size,
2006, 1, 5,
2007, 1, 8,
2009, 2, 6,
2010, 2, 4,
2007, 3, 1,
2009, 3, 2
)
我想要的是这样的:
tibble::tribble(
~Year, ~ID, ~Size,
2006, 1, 5,
2007, 1, 8,
**2008, 1, NA,
2009, 1, NA,
2010, 1, NA,
2006, 2, NA,
2007, 2, NA,
2008, 2, NA,**
2009, 2, 6,
2010, 2, 4,
**2006, 3, NA,**
2007, 3, 1,
**2008, 3, NA,**
2009, 3, 2,
** 2010, 3, NA**
)
我尝试使用循环和 add_rows 但没有成功
既然您正在使用
tribble
,我想您对 tidyverse 解决方案感到满意:
df2 <- df1 |> complete(Year, ID) |> arrange(ID, Year)
df2
给出:
# A tibble: 12 × 3
Year ID Size
<dbl> <dbl> <dbl>
1 2006 1 5
2 2007 1 8
3 2009 1 NA
4 2010 1 NA
5 2006 2 NA
6 2007 2 NA
7 2009 2 6
8 2010 2 4
9 2006 3 NA
10 2007 3 1
11 2009 3 2
12 2010 3 NA