R 根据数字顺序添加行

R 根据数字顺序添加行,r,dataframe,sequence,R,Dataframe,Sequence,我试图根据数字序列中缺失的值向数据帧添加行 这是一个雷普雷克斯。我想从这里开始: > df[-c(1,3,9),] id year V1 V2 V3 2 1 2019 0.84788413 0.10418523 0.2249371 4 2 2018 0.73183889 0.66380165 0.7681833 5 2 2019 0.38263072 -0.66741116 -0.1803099 6 2

我试图根据数字序列中缺失的值向数据帧添加行

这是一个雷普雷克斯。我想从这里开始:

> df[-c(1,3,9),]
   id year          V1          V2         V3
2   1 2019  0.84788413  0.10418523  0.2249371
4   2 2018  0.73183889  0.66380165  0.7681833
5   2 2019  0.38263072 -0.66741116 -0.1803099
6   2 2020 -0.05915745  2.09814096  0.8558323
7   3 2018  1.42148474 -1.65590355 -0.0879526
8   3 2019  1.46178632  1.96796970 -0.3489630
10  4 2018  0.12511779 -0.91978526 -2.3880951
11  4 2019  0.93936831 -0.24440871  0.3249178
12  4 2020 -1.57864369 -0.05853787  0.6078194
为此:

   id year          V1          V2         V3
1   1 2018          NA          NA         NA
2   1 2019  0.84788413  0.10418523  0.2249371
3   1 2020          NA          NA         NA
4   2 2018  0.73183889  0.66380165  0.7681833
5   2 2019  0.38263072 -0.66741116 -0.1803099
6   2 2020 -0.05915745  2.09814096  0.8558323
7   3 2018  1.42148474 -1.65590355 -0.0879526
8   3 2019  1.46178632  1.96796970 -0.3489630
9   3 2020          NA          NA         NA
10  4 2018  0.12511779 -0.91978526 -2.3880951
11  4 2019  0.93936831 -0.24440871  0.3249178
12  4 2020 -1.57864369 -0.05853787  0.6078194
逻辑是添加缺少的
year
行,并将NAs添加到其余列中

数据:


您可以使用
tidyr
complete

tidyr::complete(df, id, year)

#      id  year      V1      V2      V3
#   <int> <int>   <dbl>   <dbl>   <dbl>
# 1     1  2018 NA      NA      NA     
# 2     1  2019  0.848   0.104   0.225 
# 3     1  2020 NA      NA      NA     
# 4     2  2018  0.732   0.664   0.768 
# 5     2  2019  0.383  -0.667  -0.180 
# 6     2  2020 -0.0592  2.10    0.856 
# 7     3  2018  1.42   -1.66   -0.0880
# 8     3  2019  1.46    1.97   -0.349 
# 9     3  2020 NA      NA      NA     
#10     4  2018  0.125  -0.920  -2.39  
#11     4  2019  0.939  -0.244   0.325 
#12     4  2020 -1.58   -0.0585  0.608 
tidyr::完成(df、id、年份)
#身份证年份V1 V2 V3
#             
#1 1 2018年不适用不适用不适用
# 2     1  2019  0.848   0.104   0.225 
#3 1 2020不适用不适用不适用
# 4     2  2018  0.732   0.664   0.768 
# 5     2  2019  0.383  -0.667  -0.180 
# 6     2  2020 -0.0592  2.10    0.856 
# 7     3  2018  1.42   -1.66   -0.0880
# 8     3  2019  1.46    1.97   -0.349 
#9 3 2020不适用不适用不适用
#10     4  2018  0.125  -0.920  -2.39  
#11     4  2019  0.939  -0.244   0.325 
#12     4  2020 -1.58   -0.0585  0.608 

在base R中,您可以使用
扩展.grid()
+
合并()

tidyr::complete(df, id, year)

#      id  year      V1      V2      V3
#   <int> <int>   <dbl>   <dbl>   <dbl>
# 1     1  2018 NA      NA      NA     
# 2     1  2019  0.848   0.104   0.225 
# 3     1  2020 NA      NA      NA     
# 4     2  2018  0.732   0.664   0.768 
# 5     2  2019  0.383  -0.667  -0.180 
# 6     2  2020 -0.0592  2.10    0.856 
# 7     3  2018  1.42   -1.66   -0.0880
# 8     3  2019  1.46    1.97   -0.349 
# 9     3  2020 NA      NA      NA     
#10     4  2018  0.125  -0.920  -2.39  
#11     4  2019  0.939  -0.244   0.325 
#12     4  2020 -1.58   -0.0585  0.608 
merge(df, expand.grid(id = unique(df$id), year = unique(df$year)), all = TRUE)
#    id year          V1          V2         V3
# 1   1 2018          NA          NA         NA
# 2   1 2019  0.84788413  0.10418523  0.2249371
# 3   1 2020          NA          NA         NA
# 4   2 2018  0.73183889  0.66380165  0.7681833
# 5   2 2019  0.38263072 -0.66741116 -0.1803099
# 6   2 2020 -0.05915745  2.09814096  0.8558323
# 7   3 2018  1.42148474 -1.65590355 -0.0879526
# 8   3 2019  1.46178632  1.96796970 -0.3489630
# 9   3 2020          NA          NA         NA
# 10  4 2018  0.12511779 -0.91978526 -2.3880951
# 11  4 2019  0.93936831 -0.24440871  0.3249178
# 12  4 2020 -1.57864369 -0.05853787  0.6078194