Я пытаюсь оценить некоторые параметры через n факторов в data.table
. Хотя я знаком с использованием функциональности by
для выполнения операции с коэффициентом; выполнение этого для нескольких последовательных факторов вызывает некоторые проблемы.data.table группировка по нескольким последовательным факторам
В качестве примера, с упрощенным набором
df <- data.table(Group = c(rep("A", 2), rep("B", 3), rep("C", 2), rep("D", 4), "E", rep("F", 4)), Variable = round(rnorm(16), 2))
Group Variable
1: A 0.13
2: A 0.26
3: B -1.36
4: B -0.78
5: B -0.92
6: C 0.00
7: C -2.49
8: D -1.85
9: D 0.37
10: D -0.57
11: D 1.42
12: E -0.72
13: F -1.04
14: F 1.86
15: F 0.49
16: F 1.61
Использование df[, mean(Variable), by = Group]
даст среднее для каждой группы. Тем не менее, я хотел бы рассчитать среднее значение для предыдущих групп n.
Я пробовал использовать M[, zoo::rollapply(Variable, n, mean), by = Group]
, однако, потому что Группы имеют разные размеры, используя фиксированный n не будет работать.
Что хотела бы, функциональность сродни df[, mean(Variable), by = "This Group and previous n Groups]
.
Выход я пытаюсь добиться (для случая п = 3) будет выглядеть
Group Variable
1: A NA
2: A NA
3: B NA
4: B NA
5: B NA
6: C 0.13
7: C 0.13
8: D -1.36
9: D -1.36
10: D -1.36
11: D -1.36
12: E 0
13: F -1.85
14: F -1.85
15: F -1.85
16: F -1.85
Любая помощь будет оценена.
, если вы ищете 'rollapply' используя переменную ширину окна вы должны проверить этот вопрос: http://stackoverflow.com/questions/21368245/adaptive-rolling-window-function-top-performance-in-r помните, что самый высокий ответ на данный момент не отвечает на вопрос. – jangorecki
Эта ссылка была полезна. –