我有一个数据框,其中包含以下列: ID 因子1-> 5(5列;每个因子1个) 一年中的几周(52列,每周1个)
一年中的几周包含卷项目,可以是0、1、2,在某些情况下甚至可以是64。
因子列是一个值,它是人类与某项交互的时间。
以下是数据的外观:
您可以在附件中看到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
任何帮助将不胜感激。提前非常感谢您。
答案 0 :(得分:0)
请考虑将因子转换为数字以符合聚合需求。然后按列范围和统计信息(即max
和sum
)分别运行汇总,然后将输出合并在一起。
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")