【问题标题】:R: plyr/ddply and adjusted meansR: plyr/ddply 和调整的手段
【发布时间】:2015-05-12 16:19:37
【问题描述】:

我有一个包含数百个变量和数百个观察值的数据集。每个观察都有一个唯一的标识符,并与大约 50 个组之一相关联。看起来是这样(我不关心的变量在下面被忽略了):

 ID     Group     Score
  1        10       400
  2        11       473
  3        12       293
  4        13       382
  5        14       283
  6        11       348
  7        11       645
  8        13       423
  9        10       434
 10        10       124

等等

我想计算每个需要使用每个组的 N 计数的观察值的调整平均值、该组的分数总和以及每个组的分数的平均值。 (因此,在上面的示例中,第 11 组的 N 计数为 3,总和为 1466,平均值为 488.67,我将仅在 ID 2、6 和 7 上使用这些数字。

我一直在摆弄 plyr,并且能够按如下方式提取 n 计数和均值(考虑缺失的分数和组值):

new_data <- ddply(main_data, "Group", N = sum(!is.na(Scores)), mean = mean(Scores, na.rm = TRUE). 

不过,我不知道如何获得特定组的分数总和,然后如何在 main_data 集或新数据集中计算调整后的平均值。任何帮助将不胜感激。

【问题讨论】:

  • 使用 dplyr 包,你可能需要group_by(mydf, Group) %&gt;% summarise(num = n(), total = sum(Score), mean = sum(Score) / n())

标签: r plyr mean


【解决方案1】:

这里是plyr 方式。

ddply(main_data, .(Group), summarize, N = sum(!is.na(Score)), mean = mean(Score, na.rm = TRUE), total = sum(Score))

  Group N     mean total
1    10 3 319.3333   958
2    11 3 488.6667  1466
3    12 1 293.0000   293
4    13 2 402.5000   805
5    14 1 283.0000   283

查看dplyr 包。

main_data %>% group_by(Group) %>% summarize(n = n(), mean = mean(Score, na.rm=TRUE), total = sum(Score))

Source: local data frame [5 x 4]

  Group n     mean total
1    10 3 319.3333   958
2    11 3 488.6667  1466
3    12 1 293.0000   293
4    13 2 402.5000   805
5    14 1 283.0000   283

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2014-01-29
    • 2014-11-03
    • 1970-01-01
    相关资源
    最近更新 更多