根据 R 中的固定值范围在数据框中添加新行

问题描述 投票:0回答:1

我想为固定值范围(年份: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 但没有成功

r loops
1个回答
0
投票

既然您正在使用

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
© www.soinside.com 2019 - 2024. All rights reserved.