【发布时间】:2019-06-15 03:35:19
【问题描述】:
我的数据框包含 3 个财政年度(2013 财年、2014 财年和 2015 财年)调查中提出的不同问题的分数。
结果由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 年数据进行比较的问题。但我无法弄清楚如何将这种情况考虑到我的代码中。
对此的任何帮助将不胜感激。
【问题讨论】:
-
这里有几个问题,包括:首先,我认为
FY应该是会计年度。但是 R 不知道它是一个日期,所以它会认为你想要回归一个数值变量的多值因子。它不会那样。您需要将 FY 转换为数值,例如年份。这是你的意图吗?此外,如果您想要对满意度随时间变化的线性近似值,您应该以相反的方式进行回归lm(satisfaction~date),这就是您所追求的吗? -
是的,这就是我要找的。span>