使用 R 用下一行中的字符替换缺失的字符值

Replacing missing character values by the character in the row below using R

我有一个包含 <NA> 的字符列,我想将其替换为该行下方的字符。示例如下:

df12 <-
  structure(
    list(Reg = structure(c(NA, 1L, 1L, NA, 1L, 1L, NA, 2L, 2L, NA, 2L, 2L, NA, 2L, 2L)
                         , .Label = c("A", "B"), class = "factor")), 
    .Names = "Reg", row.names = c(NA, -15L), class = "data.frame")

df12
Reg
1  <NA>
2     A
3     A
4  <NA>
5     A
6     A
7  <NA>
8     B
9     B
10 <NA>
11    B
12    B
13 <NA>
14    B
15    B

library(dplyr)

需要输出

1     A
2     A
3     A
4     A
5     A
6     A
7     B
8     B
9     B
10    B
11    B
12    B
13    B
14    B
15    B

我们可以通过指定.direction

来使用fill
library(dplyr)
library(tidyr)
df12 %>%
    fill(Reg, .direction = "up")

使用 na.locf 的另一个选项更快且严格设计用于使用最新的无缺失值填充缺失值:

zoo::na.locf(df12,fromLast=TRUE)

#    Reg
# 1    A
# 2    A
# 3    A
# 4    A
# 5    A
# 6    A
# 7    B
# 8    B
# 9    B
# 10   B
# 11   B
# 12   B
# 13   B
# 14   B
# 15   B