У меня есть data.table, который выглядит следующим образом:Используйте предыдущее расчетное значение строки в г
DT <- data.table(A=1:20, B=1:20*10, C=1:20*100)
DT
A B C
1: 1 10 100
2: 2 20 200
3: 3 30 300
4: 4 40 400
5: 5 50 500
...
20: 20 200 2000
Я хочу, чтобы иметь возможность рассчитать новый столбец «D», который имеет первое значение как среднее первые 20 строк в столбце B в качестве первого значения, а затем я хочу использовать первую строку столбца D, чтобы подсчитать следующее значение строки D.
Скажите, что среднее из первых 20 строк столбца B 105. Формула для следующей строки в столбце D такова: DT $ D [1] + DT $ C [2] , где я беру предыдущее значение строки D и добавляю значение строки C. t Hird строка будет выглядеть следующим образом: DT $ D [2] + DT $ C [3]
A B C D
1: 1 10 100 105
2: 2 20 200 305
3: 3 30 300 605
4: 4 40 400 1005
5: 5 50 500 1505
...
20: 20 200 2000 21005
Любые идеи по этому вопросу будет принято?
Я думаю, что сдвиг будет большой помощью для отставания, но не знает, как избавиться от НС, который он производит в первом случае?
Try 'library (RcppRoll); DT [, D: = cumsum (roll_mean (B, 20))] 'Данные примера не содержат 20 строк, поэтому это не проверено. – akrun
Вы используете только первые 20 строк и не расширяете его? – akrun
Я не думаю, что они распространяют среднее. Найдите среднее значение один раз, добавьте столбец C после –