关于 r:Unknown or uninitialised column 在计算中使用 Lag 时

Unknown or uninitialised column when using Lag in calculation

我试图在所述列的计算中引用同一列中的前一行。然而,这总是会导致\\'未知或未初始化的列\\' 警告消息和很多 NA\\'s.

1
2
3
4
5
MovementData <- c(-1, -2, -1, 1, 2, 4)
Database <- data.frame(MovementData)

Database$Score <- ifelse(Database$MovementData <= 0 , 0,
                                    ifelse(lag(Database$Score,1) == 0,1,2))

所需的输出:

1
Database$Score <- c(0,0,0,1,2,2)

我的计算意图如下:
如果 MovementData 为负,则得分为 0。如果 MovementData 为正且之前的得分为 0,则得分为 1。如果 MovementData 为正且之前的得分不为 0,则得分为 2。

这给了我前面提到的错误。
我正在寻找一种使用滞后(或其他函数)的方法,它可以在列本身的计算中引用 Database$Score 列中的前一行。
计算所述列时如何引用同一列中的前一行?


看起来我们需要一个递归评估

1
2
3
4
5
6
7
8
9
10
Database$Score[1] <- 0

for(i in 2:nrow(Database)) {
      Database$Score[i] <- if(Database$MovementData[i] <= 0) {
                           0 } else if(Database$MovementData[i] > 0 &
                                    Database$Score[i-1] == 0) {
                              1 } else 2}

Database$Score
#[1] 0 0 0 1 2 2