如果满足条件,如何向上一行添加值

gri*_*109 5 if-statement row r

我想要做的是如果列b中的行等于2,那么我想在列a中的前一行的值中添加3.如果条件不满足,那么我不希望前一行值改变.当我尝试这个代码但是R正在添加到后续行.并且我替换-1行引用并不重要,它总是添加到后续行.

df$a[-1] <- ifelse(df$b == 2, df$a[-1] + 3, df$a[-1])

Have                               Want
a b                                a b
0 1                                0 1
1 3                                4 3
2 2                                2 2
2 4                                2 4
4 5                                4 5
Run Code Online (Sandbox Code Playgroud)

dim*_*_ps 5

另一种方法

df <- data.frame(a=c(0, 1, 2, 2, 3),
             b=c(1, 3, 2, 4, 4))

df$a[c(df$b[-1], 0) == 2] <- df$a[c(df$b[-1], 0) == 2] + 3
Run Code Online (Sandbox Code Playgroud)