R:plyr / ddply和调整手段

时间:2015-03-11 01:31:00

标签: r plyr mean

我有一个包含数百个变量和数百个观测值的数据集。每个观察具有唯一的标识符,并且与大约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集或新数据集中计算调整后的均值感到困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

以下是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