使用 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
我有一个包含 <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