Я хочу получить столбец со скользящим средним доходом для каждого возраста, но включая возраст на один год старше и моложе.Например, для возраста 42 года и типа 1 для этого типа необходимо будет использовать все данные о доходах, которые имеют возраст 41,42 и 43 года (если есть), и так далее.Я хотел бы систематический способ сделать это.
Минимальные данные будут выглядеть примерно так:
income <- c(1000, 2000, 3000, 4000, 6000, 7000, 8000, 9000, 10000, 11000)
age <- c(41, 42, 42, 44, 45, 46, 47, 47, 49, 50)
type <- c(1,1,2,2,1,2,1,2,1,1)
df <- as.data.frame(cbind(income, age, type))
Я думал об использовании роллаплинга в зоопарке, но это было бы для последовательности наблюдений переменных доходов, а не для значений одной из переменных группировкиВот те, которые я хочу «бросить».
Сортировка по dplyr (group_by(type,age)) %>% summarize (avg=mean(income))
, но группировка по возрасту (возраст-1, возраст, возраст + 1).Цель состоит в том, чтобы сгладить средний доход по возрасту с перекрывающимися интервалами в три года.Конечно, доход в двух возрастах в каждом из хвостов возрастного распределения будет меньше или вообще не будет сглажен.
Спасибо !!
PS Ожидаемый результат будет следующим, я думаю(ручной расчет):
> dfexpected
age type mean_income
1 41 1 1500
2 42 1 1500
3 43 1 2000
4 44 1 6000
5 45 1 6000
6 46 1 7500
7 47 1 9000
8 48 1 9500
9 49 1 10500
10 50 1 10500
11 41 2 3000
12 42 2 3000
13 43 2 3500
14 44 2 4000
15 45 2 5500
16 46 2 7500
17 47 2 7500
18 48 2 8000
19 49 2 NA
20 50 2 NA
Обратите внимание, что средний доход на (скользящий) возраст и тип равен только NA, если доход для этого типа за все три года в этом возрасте имеет все NA.Даже если фактическими данными для данного возраста являются NA, если есть наблюдения на год выше или ниже, среднее значение будет рассчитано (без учета NA).