这是我的数据框的示例:
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/