Мой фрейм данных состоит из оценок по различным вопросам, заданным в опросе, за 3 финансовых года (2013 ФГ, 14 ФГ и 15 ФГ).
Результаты представлены Region
.
Вот как выглядит образец фактического фрейма данных, где у нас есть два вопроса на регион, задаваемых в разные годы.
testdf=data.frame(FY=c("FY13","FY14","FY15","FY14","FY15","FY13","FY14","FY15","FY13","FY15","FY13","FY14","FY15","FY13","FY14","FY15"),
Region=c(rep("AFRICA",5),rep("ASIA",5),rep("AMERICA",6)),
QST=c(rep("Q2",3),rep("Q5",2),rep("Q2",3),rep("Q5",2),rep("Q2",3),rep("Q5",3)),
Very.Satisfied=runif(16,min = 0, max=1),
Total.Very.Satisfied=floor(runif(16,min=10,max=120)))
Моя цель
Для каждого региона моя цель - определить, какой вопрос пережил наиболее значительную восходящую эволюцию за эти 3 года. Чтобы измерить значительные восходящие движения, я решил использовать наклон регрессии в качестве параметра.
Вопрос с самой значительной восходящей эволюцией в пределах региона за 3-х летний период будет с самым крутым положительным наклоном .
Используя эту логику, я решил сделать следующее -
1) Для каждой комбинации Region
и QST
я запускаю функцию lm
.
2) Я извлекаю наклон для каждой комбинации и сохраняю его как отдельную переменную. Затем для каждого региона я отфильтрую вопрос с максимальным значением наклона.
Моя попытка
Вот моя попытка решить эту проблему.
test_final=testdf %>%
group_by(Region,QST) %>%
map(~lm(FY ~ Very.Satisfied, data = .)) %>%
map_df(tidy) %>%
filter(term == 'circumference') %>%
select(estimate) %>%
summarise(Value = max(estimate))
Однако, когда я запускаю это, я получаю сообщение об ошибке, говорящее, что объект FY
не был найден.
Дополнительное требование
Кроме того, я бы хотел, чтобы это работало только для вопросов, которые имеют по крайней мере 2 года подряд данных для сравнения. Но я не могу понять, как включить это условие в мой код.
Любая помощь с этим будет принята с благодарностью.