gpt4 book ai didi

R用下一个非零值替换数据帧中的零

转载 作者:行者123 更新时间:2023-12-04 17:48:03 24 4
gpt4 key购买 nike

我有一个包含零值的列的数据框:

a <- 1:10
b <- c(1, 0, 0, 0, 0, -1, -1, 0, 0, 1)
df <- data.frame(a, b)
df

如何用最后一个非零值替换零值,即 df$b 列是:
 1,-1,-1,-1,-1,-1,-1,1,1,1

感谢您的帮助。

最佳答案

这是 na.locf 的一种方式来自 zoo .尽管此方法确实将某些值更改为 NA在这个过程中,代码是好的和无痛的。

library(zoo)
na.locf(with(df, ifelse(b == 0, NA_real_, b)), fromLast = TRUE)
# [1] 1 -1 -1 -1 -1 -1 -1 1 1 1

一种替代方法,并且可能比 ifelse 更快在长向量上,是
na.locf(with(df, { is.na(b) <- b == 0; b }), fromLast = TRUE)
# [1] 1 -1 -1 -1 -1 -1 -1 1 1 1

关于R用下一个非零值替换数据帧中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414579/

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