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