我希望使用dplyr将多个数据帧传递给函数,然后返回带有汇总变量的数据帧。我能够在聚合级别上做到这一点,但是当我尝试按因子分组时,该函数将为整体聚合返回相同的值。这是我工作正常的示例:
compCalc <- function(frame,segment) {
newFrame <- frame %>%
summarise(seg = segment,
FTEs = sum(FTEs),
total_TCC = sum(frame$totalCompensationCost),
TCC_per_fte = sum(frame$totalCompensationCost)/sum(frame$FTEs),
TCC_per_hour = sum(frame$totalCompensationCost)/sum(frame$hours),
total_wages = sum(frame$totalWages))
return(newFrame)
}
然后,我像这样调用该函数:
nuSectorOverall <- compCalc(dfEx, "allNonUnion")
我会得到很好的输出,如下所示:
Overall
seg FTEs total_TCC TCC_per_fte TCC_per_hour total_wages
allNonUnion 3980.559 185865849 46693.4 24.09153 171344280
现在,当我将group_by子句引入混合时,如下所示:
compCalcEmp <- function(frame,segment) {
newFrame <- frame %>%
group_by(employeeGroup) %>%
summarise(seg = segment,
FTEs = sum(FTEs),
total_TCC = sum(frame$totalCompensationCost),
TCC_per_fte = sum(frame$totalCompensationCost)/sum(frame$FTEs),
TCC_per_hour = sum(frame$totalCompensationCost)/sum(frame$hours),
total_wages = sum(frame$totalWages))
return(newEmpFrame)
}
我遇到以下问题:
employeeGroup seg FTEs total_TCC TCC_per_fte TCC_per_hour total_wages total_wages_per_fte
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Bargaining Unit overall 139.2841 185865849 46693.4 24.09153 171344280 43045.28
2 Management & Excluded overall 402.0311 185865849 46693.4 24.09153 171344280 43045.28
3 Non-Union overall 3439.2438 185865849 46693.4 24.09153 171344280 43045.28
如您所见,除FTE外,它正在为每个分组变量计算相同的值!
我望了很久,很难看是否有与此类似的问题,如果找不到,我深表歉意。任何帮助将不胜感激!
一切顺利
[R
您不想使用frame$
引用管道frame
内部的列dplyr
。尝试以下方法:
compCalcEmp <- function(frame,segment) {
newFrame <- frame %>%
group_by(employeeGroup) %>%
summarise(seg = segment,
FTEs = sum(FTEs),
total_TCC = sum(totalCompensationCost),
TCC_per_fte = sum(totalCompensationCost)/sum(FTEs),
TCC_per_hour = sum(totalCompensationCost)/sum(hours),
total_wages = sum(totalWages))
return(newFrame)
}
它以前没有工作,group_by
因为在这种情况下,您是针对整体frame
而不是按子集进行汇总。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句