【问题标题】:different aggregation functions for different columns不同列的不同聚合函数
【发布时间】:2019-06-14 19:59:41
【问题描述】:

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

一年中的周包含数量项,可以是 0、1、2,或者在某些情况下最多 64 个。

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

数据如下所示:

正如您在附件中看到的,ID 可以有多行。

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

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

我的预期结果是什么: 如果我考虑以 250557 结尾的 ID,则有两个实例。我希望 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

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

【问题讨论】:

  • 在我发布后在这里大声思考....将表子集到因子表和体积表中会更好吗,进行求和或求最大值,然后使用在 r?? 中加入左函数?

标签: r summary


【解决方案1】:

考虑将因子转换为数值以满足聚合需求。然后按列范围和统计数据(即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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2021-07-02
    • 2015-10-15
    • 2020-01-20
    • 2021-06-16
    相关资源
    最近更新 更多