如何将多个因子转换成一行?

时间:2016-03-23 06:40:23

标签: r row aggregate factors

我有一个包含8个变量的数据框:

enter image description here

对于变量Labor Category,我们有5个因素:假期工作,常规,加班,培训,其他工作。

问题是:我是否可以找到一种方法来聚合除Labor Category之外的具有相同值的行并总结Sum_FTE变量?

即。我们可以在添加更多列的同时减少行数:

“Labor.CategoryHoliday.Worked”,“Labor.CategoryOther.Worked”,“Labor.CategoryOvertime”,“Labor.CategoryRegular”,“Labor.CategoryTraining”并使用0或1表示每个因子的状态。然后将除工作类别之外的具有相同值的行总计FTE总结。

enter image description here

1 个答案:

答案 0 :(得分:0)

我们可以通过运营来做一组。使用dplyr,我们将group_by中的列名称指定为分组变量,然后获取" Sum_FTE"的sumsummarise

library(dplyr)
df1 %>%
    group_by_(.dots= names(df1)[c(1:2,4:5)]) %>%
    summarise(TotalFTE= sum(Sum_FTE))

对于问题的第二部分,我们可以使用dcast(用dput代替图片文件显示数据集会更好

library(data.table)
setDT(df1)[, N := 1:.N, (Labor.Category)]
dcast(df1, Med.Center+Charged.Job+Month+Pay.Period.End ~N, 
          value.var="Labor.Category, length)