不同列的不同聚合函数

时间:2019-06-14 19:59:41

标签: r summary

我有一个数据框,其中包含以下列:   ID   因子1-> 5(5列;每个因子1个)   一年中的几周(52列,每周1个)

一年中的几周包含卷项目,可以是0、1、2,在某些情况下甚至可以是64。

因子列是一个值,它是人类与某项交互的时间。

以下是数据的外观:

mydata

您可以在附件中看到ID可以有多行。

我想在r中执行以下操作...我想对ID的所有唯一值的体积单元格求和,并通过ID的每个唯一值获取每个因子的最大值。

我没有任何代码可以显示,因为我不太熟悉如何在r中执行此操作。

我的预期结果是什么: 如果我认为ID以250557结尾,则有两个实例。我期望Facotr 1 = 4;因数2 = 1,因数3,4,和5 =0。然后每周水平看,我会期望... 1,1、1,2,1,3,1,1,1,1,1 ,2,1,2,2,1,2,1,2,1

任何帮助将不胜感激。提前非常感谢您。

1 个答案:

答案 0 :(得分:0)

请考虑将因子转换为数字以符合聚合需求。然后按列范围和统计信息(即maxsum)分别运行汇总,然后将输出合并在一起。

df[sapply(df, is.factor)] <- as.numeric(df[sapply(df, is.factor)])

factor_max_df <- aggregate(cbind(Factor1, Factor2, Factor3, Factor4, Factor5) ~ ID1, df, 
                           max)

volume_sum_df <- aggregate(. ~ ID1, subset(df, select=[-c(Factor1, Factor2, Factor3,
                                                          Factor4, Factor5)], 
                           sum)

final_df <- merge(factor_max_df, volume_sum_df, by="ID1")