将数据框中的行替换为 0,前一行值不等于 0

标签 r dataframe replace conditional-statements rows

这是我的数据框的示例:

df = read.table(text = 'a  b
120 5
120 5
120 5
119 0
118 0
88 3
88 3
87 0  
10 3
10 3
10 3
7 4
6 0
5 0
4 0', header = TRUE)

我需要替换 col b 中的 0每个前面的数字都不同于 0。

这是我想要的输出:
 a  b
120 5
120 5
120 5
119 5
118 5
88 3
88 3
87 3  
10 3
10 3
10 3
7 4
6 4
5 4
4 4

直到现在我试过:
df$b[df$b == 0] = (df$b == 0) - 1

但它不起作用。
谢谢

最佳答案

na.locf来自 zoo可以帮助解决这个问题:

library(zoo)
#converting zeros to NA so that na.locf can get them
df$b[df$b == 0] <- NA
#using na.locf to replace NA with previous value
df$b <- na.locf(df$b)

出去:
> df
     a b
1  120 5
2  120 5
3  120 5
4  119 5
5  118 5
6   88 3
7   88 3
8   87 3
9   10 3
10  10 3
11  10 3
12   7 4
13   6 4
14   5 4
15   4 4

关于将数据框中的行替换为 0,前一行值不等于 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43801312/

相关文章:

重复代码以在数据框中添加空白行

r - 如何在 R 中用因子值(如 y)做 ggplot barplot?

dataframe - 如何使用 Julia、Pluto.jl 和 PlutoUI.jl 的 FilePicker 元素读取上传的 CSV 文件

regex - sed regex 到非贪婪替换?

algorithm - 网络流中跨 block 的字符串匹配

linux - 在 Linux 上用 6 GB 文件中的硬制表符替换空格字符

r - 使用 dplyr 的条件累积和

r - 更改辅助线 Axis 颜色

python pandas如何将不同数据框中的其他值乘以列

r - 计算 big.matrix 的平均值