簡體   English   中英

R:plyr / ddply和調整后的均值

[英]R: plyr/ddply and adjusted means

我有一個包含數百個變量和數百個觀測值的數據集。 每個觀察都有一個唯一的標識符,並與大約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位數和均值(考慮缺少的Score和Group值):

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

但是,我對如何獲取特定組的分數總和,然后如何在main_data集合或新數據集中計算調整后的均值感到困惑。 任何幫助,將不勝感激。

這是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

dplyrdplyr軟件包。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM