有一个数据框作为打击(带有 NA 值)
md <- data.frame(cat=c('a','b','d',NA,'E',NA),
subcat=c('A','C',NA,NA,NA,'D'))
cat subcat
1 a A
2 b C
3 d <NA>
4 <NA> <NA>
5 E <NA>
6 <NA> D
Run Code Online (Sandbox Code Playgroud)
我想用前一个字符替换 NA,结果如下。
使用像 'for ...' 这样的循环语句可以做到,但效率不高。有什么公式或包可以做到吗?谢谢!
cat subcat
1 a A
2 b C
3 d C
4 d C
5 E C
6 E D
Run Code Online (Sandbox Code Playgroud)
您可以使用包na.locf中的功能zoo。
zoo::na.locf(md)
cat subcat
1 a A
2 b C
3 d C
4 d C
5 E C
6 E D
Run Code Online (Sandbox Code Playgroud)
或者分别使用fill和everything中的tidyr和dplyr。
library(dplyr)
library(tidyr)
md %>% fill(everything())
# cat subcat
# 1 a A
# 2 b C
# 3 d C
# 4 d C
# 5 E C
# 6 E D
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |