【问题标题】:R aggregate dataframe on two variables and apply functionR在两个变量上聚合数据框并应用函数
【发布时间】:2015-04-26 14:28:44
【问题描述】:

我有一个数据框,我想在每个测量值上应用函数均值来聚合两个变量。这里是数据框的头部:

  Subject Activity         meassureA         meassureB         meassureC       meassureD
1       1  running         0.2820216      -0.037696218       -0.13489730       -0.3282802
2       1  running         0.2558408      -0.064550029       -0.09518634       -0.2292069
3       1  walking         0.2548672       0.003814723       -0.12365809       -0.2751579
4       2  running         0.3433705      -0.014446221       -0.16737697       -0.2299235

现在,我想得到这样的东西:

  Subject Activity         meassureA         meassureB         meassureC       meassureD
1       1  running         mean(S1,A1)      mean(S1,A1)       mean(S1,A1)       mean(S1,A1)
2       1  walking         mean(S1,A2)      mean(S1,A2)       mean(S1,A2)       mean(S1,A2)
3       2  running         mean(S2,A1)      mean(S2,A1)       mean(S2,A1)       mean(S2,A1)
4       2  walking         mean(S2,A2)      mean(S2,A2)       mean(S2,A2)       mean(S2,A2)

其中测量 A 的值是受试者 1 (S1) 执行活动跑步 (A1) 的所有值的平均值。

我正在考虑使用聚合(),但我无法将迄今为止学到的知识应用到我的问题上。非常感谢任何帮助。

【问题讨论】:

  • 不确定但可能是aggregate(.~ Subject + Activity, df, mean)?
  • @DavidArenburg,我认为这就是他们想要的。
  • 也可以看看here

标签: r aggregate


【解决方案1】:

正如大卫在 cmets 中提到的,您可以这样做:

aggregate(. ~ Subject + Activity, df, mean)

或者使用data.table:

data.table::setDT(df)[, lapply(.SD, mean), by = .(Subject, Activity)]

或者使用dplyr:

library(dplyr)
df %>% group_by(Subject, Activity) %>% summarise_each(funs(mean))

这给出了:

#  Subject Activity meassureA    meassureB  meassureC  meassureD
#1       1  running 0.2689312 -0.051123123 -0.1150418 -0.2787436
#2       1  walking 0.2548672  0.003814723 -0.1236581 -0.2751579
#3       2  running 0.3433705 -0.014446221 -0.1673770 -0.2299235

【讨论】:

  • 或者data.table::setDT(df)[, lapply(.SD, mean), by = .(Subject, Activity)],如果你知道你在做什么:)
猜你喜欢
  • 2017-08-15
  • 1970-01-01
  • 2018-03-22
  • 2014-01-21
  • 2014-10-04
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多