根据向量序列用 NA 填充行
fill rows with NA based on vector sequence
我有以下 data.frame
:
df=data.frame(x=c(1:3,8:10,15),y=rnorm(7))
x y
1 0.05976784
2 -1.01992023
3 -1.16075185
8 0.48641141
9 0.54460423
10 -0.59915799
15 -0.60785783
我只需要按照从 1 到 17 的 df$x
序列用 NA 填充行。
这是我的预期输出:
x y
1 0.05976784
2 -1.01992023
3 -1.16075185
4 NA
5 NA
6 NA
7 NA
8 0.48641141
9 0.54460423
10 -0.59915799
11 NA
12 NA
13 NA
14 NA
15 -0.60785783
16 NA
17 NA
我怎样才能做到这一点?
有什么建议吗?
我们可以使用 tidyr
中的 complete
tidyr::complete(df, x = 1:17)
# A tibble: 17 x 2
# x y
# <dbl> <dbl>
# 1 1 -0.560
# 2 2 -0.230
# 3 3 1.56
# 4 4 NA
# 5 5 NA
# 6 6 NA
# 7 7 NA
# 8 8 0.0705
# 9 9 0.129
#10 10 1.72
#11 11 NA
#12 12 NA
#13 13 NA
#14 14 NA
#15 15 0.461
#16 16 NA
#17 17 NA
数据
set.seed(123)
df=data.frame(x=c(1:3,8:10,15),y=rnorm(7))
使用base::match
:
data.frame(x=1:17, df$y[match(1:17, df$x)])
我有以下 data.frame
:
df=data.frame(x=c(1:3,8:10,15),y=rnorm(7))
x y
1 0.05976784
2 -1.01992023
3 -1.16075185
8 0.48641141
9 0.54460423
10 -0.59915799
15 -0.60785783
我只需要按照从 1 到 17 的 df$x
序列用 NA 填充行。
这是我的预期输出:
x y
1 0.05976784
2 -1.01992023
3 -1.16075185
4 NA
5 NA
6 NA
7 NA
8 0.48641141
9 0.54460423
10 -0.59915799
11 NA
12 NA
13 NA
14 NA
15 -0.60785783
16 NA
17 NA
我怎样才能做到这一点? 有什么建议吗?
我们可以使用 tidyr
complete
tidyr::complete(df, x = 1:17)
# A tibble: 17 x 2
# x y
# <dbl> <dbl>
# 1 1 -0.560
# 2 2 -0.230
# 3 3 1.56
# 4 4 NA
# 5 5 NA
# 6 6 NA
# 7 7 NA
# 8 8 0.0705
# 9 9 0.129
#10 10 1.72
#11 11 NA
#12 12 NA
#13 13 NA
#14 14 NA
#15 15 0.461
#16 16 NA
#17 17 NA
数据
set.seed(123)
df=data.frame(x=c(1:3,8:10,15),y=rnorm(7))
使用base::match
:
data.frame(x=1:17, df$y[match(1:17, df$x)])