我有一个如下所示的数据框:
d <- data.frame(county = c("Abilene", rep(NA, 5), "Cook", rep(NA, 4), "Blah", NA, "Allegheny", rep(NA, 3)))
county
1 Abilene
2 <NA>
3 <NA>
4 <NA>
5 <NA>
6 <NA>
7 Cook
8 <NA>
9 <NA>
10 <NA>
11 <NA>
12 Blah
13 <NA>
14 Allegheny
15 <NA>
16 <NA>
17 <NA>
我想用<NA>
填写之前的非缺失县名的值。换句话说,我想最终得到这个:
county
1 Abilene
2 Abilene
3 Abilene
4 Abilene
5 Abilene
6 Abilene
7 Cook
8 Cook
9 Cook
10 Cook
11 Cook
12 Blah
13 Blah
14 Allegheny
15 Allegheny
16 Allegheny
17 Allegheny
到目前为止,我一直在循环d$county
中的每个值,更新一个临时变量,其名称为每个非空县值,并重新填充每个单元格。对于大型数据帧,这非常慢。我更愿意在dplyr
中这样做,但我也愿意接受任何其他解决方案。
答案 0 :(得分:2)
使用tidyr
我们可以使用fill(data, vars)
:
library(tidyr)
fill(d, county)
答案 1 :(得分:1)
我们可以使用na.locf
library(zoo)
na.locf(d)