我想利用这个na.locf来保存数据帧的非缺失值,其中第一次观察可能为零.
dta <- data.frame(A = c(NA, NA, 1, 2, 4, 5, NA, NA, NA),
B = c(NA, 5, 4, 5, 8, 9, NA, NA, 100))
dta %>% mutate_all(.funs = funs(na.locf(.)))
Run Code Online (Sandbox Code Playgroud)
错误
mutate_impl(.data, dots):列A必须是长度9(行数)或1,而不是7
Vectorize(require)(package = c("dplyr", "zoo"),
character.only = TRUE)
dta <- data.frame(A = c(0, NA, 1, 2, 4, 5, NA, NA, NA),
B = c(0, 5, 4, 5, 8, 9, NA, NA, 100))
dta %>% mutate_all(.funs = funs(na.locf(.)))
Run Code Online (Sandbox Code Playgroud)
潜在的解决方法可能涉及用NAs零替换第一组并且可以稍后替换零前向但是我有兴趣将NAs留在原来的位置并且探索是否有一种方便的方法来na.locf忽略功能没有接收到的情况非NA值开始替换.
使用na.rm = FALSE参数注意它可以占用整个数据框 - 您不必单独将其应用于每个列.
na.locf(dta, na.rm = FALSE)
Run Code Online (Sandbox Code Playgroud)
这给出了:
A B
1 NA NA
2 NA 5
3 1 4
4 2 5
5 4 8
6 5 9
7 5 9
8 5 9
9 5 100
Run Code Online (Sandbox Code Playgroud)
还有is na.locf0:
dta %>% mutate_all(.funs = funs(na.locf0(.)))
Run Code Online (Sandbox Code Playgroud)
请参阅帮助页面?na.locf,其中记录了na.rm参数以及文档na.locf0.请注意,na.locf0当前必须按列单独应用,但始终生成相同长度的输出.
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |