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

时间:2014-10-16 21:54:57

标签: r replace

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

这是来自na.locf的{​​{1}}的一种方式。虽然这个方法确实在过程中将某些值更改为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