Неизвестный или неинициализированный столбец при использовании Lag в расчете - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь сослаться на предыдущую строку в том же столбце внутри вычисления для указанного столбца.Однако это всегда приводит к предупреждающему сообщению «Неизвестный или неинициализированный столбец» и большому количеству NA.

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))

Желаемый результат:

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

Мои намерения для расчета следующие:Если MovementData отрицателен, оценка равна 0. Если MovementData положительна И предыдущий счет был 0, счет равен 1. Если MovementData положительный, а предыдущий счет не был 0, счет равен 2.

Это дает мне ранее упомянутую ошибку.Я ищу способ использовать лаг (или другую функцию), который может ссылаться на предыдущие строки в столбце Database $ Score внутри вычисления самого столбца.Как я могу ссылаться на предыдущие строки в том же столбце при расчете указанного столбца?

1 Ответ

0 голосов
/ 28 мая 2018

Похоже, нам нужна рекурсивная оценка

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...