R:使用先前值填充缺失值

时间:2017-03-03 03:18:41

标签: r loops missing-data

我有一个如下所示的数据框:

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中这样做,但我也愿意接受任何其他解决方案。

2 个答案:

答案 0 :(得分:2)

使用tidyr我们可以使用fill(data, vars)

library(tidyr)
fill(d, county)

答案 1 :(得分:1)

我们可以使用na.locf

library(zoo)
na.locf(d)