gpt4 book ai didi

r - 当第一次观察是 na 时,使用 na.locf 传递最后一个值并忽略第一行

转载 作者:行者123 更新时间:2023-12-05 08:41:50 38 4
gpt4 key购买 nike

我想使用 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(.)))

Error in mutate_impl(.data, dots) : Column A must be length 9 (the number of rows) or one, not 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(.)))

解决方法

潜在的解决方法可能涉及用零替换第一组 NA 并向前携带零,以后可以替换,但我有兴趣将 NA 留在原处并探索是否有方便的方法使 na.locf 忽略函数未接收到非 NA 值以开始替换的情况的方法。

最佳答案

使用 na.rm = FALSE 参数注意它可以占用整个数据框——您不必单独将它应用于每一列。

na.locf(dta, na.rm = FALSE)

这给出:

   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

还有是na.locf0:

dta %>% mutate_all(.funs = funs(na.locf0(.)))

请参阅帮助页面 ?na.locf,其中记录了 na.rm 参数以及 na.locf0 。请注意,na.locf0 目前确实必须按列单独应用,但始终会产生相同长度的输出。

关于r - 当第一次观察是 na 时,使用 na.locf 传递最后一个值并忽略第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47206319/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com