在索引值上方和下方填充 select 行
Fill select row above and below index value
运行 在 R
中工作时遇到问题
我在数据框 (df) 中有一个变量 (X),它看起来像这样
df$X
NA
12345
NA
NA
32409
NA
NA
NA
NA
NA
04598
NA
NA
NA
我需要执行以下操作:
其中 X 不是 NA,替换为:
- X 中值为
的前一行
- 填写剩余的行,直到达到下一个值
最终,它需要看起来像这样
df$X
12345
12345
12345
32409
32409
32409
32409
32409
32409
04598
04598
04598
04598
04598
我尝试使用 for 循环完成第一部分(填写前一行),但似乎无法正常工作
for (x in df$X) {
x = df$X[x]
y = x -1
df$X[y] <- ifelse(!is.na(x), x, NA)
}
非常感谢您的帮助!
这是 dplyr
和 tidyr
的方法:
library(dplyr)
df2 <- df %>%
mutate(X = if_else(is.na(X), lead(X), X)) %>%
tidyr::fill(X)
运行 在 R
中工作时遇到问题
我在数据框 (df) 中有一个变量 (X),它看起来像这样
df$X
NA
12345
NA
NA
32409
NA
NA
NA
NA
NA
04598
NA
NA
NA
我需要执行以下操作:
其中 X 不是 NA,替换为:
- X 中值为
的前一行
- 填写剩余的行,直到达到下一个值
最终,它需要看起来像这样
df$X
12345
12345
12345
32409
32409
32409
32409
32409
32409
04598
04598
04598
04598
04598
我尝试使用 for 循环完成第一部分(填写前一行),但似乎无法正常工作
for (x in df$X) {
x = df$X[x]
y = x -1
df$X[y] <- ifelse(!is.na(x), x, NA)
}
非常感谢您的帮助!
这是 dplyr
和 tidyr
的方法:
library(dplyr)
df2 <- df %>%
mutate(X = if_else(is.na(X), lead(X), X)) %>%
tidyr::fill(X)