簡體   English   中英

根據 R 中的條件計算組的平均值

[英]Calculate mean on groups based upon condition in R

我有一個數據框。 在這個框架中有一個特殊的 2 列。

讓我們稱之為分數和分組

我想找到每組得分的平均值。
我知道我可以這樣做

平均值(子集(mydata$Score,mydata$Group > 10 & mydata$group < 20))

這給了我組值在 10 到 20 之間的行的平均值,

現在的問題是,這對於 1 個特定的子組工作正常,但我必須根據稍微復雜的條件將它應用於數百個讓我們說,組可以有 1000 個不同的值,所以我可以像 mean(subset(mydata$得分,mydata$Group == X))

但是 X 正在改變,我需要為每個人存錢,有什么好方法可以做到這一點?

如評論中所述,來自基礎 R 的aggregate專門用於此類任務

set.seed(0)
dat <- data.frame(Score=floor(runif(10, 0, 10)),
                  Group=sample(letters[1:3], 10, rep=T))

aggregate(Score ~ Group, data=dat, mean)
#   Group    Score
# 1     a 4.333333
# 2     b 7.666667
# 3     c 5.500000

我想我找到了另一個解決我自己問題的方法。

sapply(1:100, function(x) median(subset(myData$Score, myData$Group == x)))

在這種情況下,我只是將條件設置為Group == X ,而這可以是任何范圍或多個條件

然后也可以在那里內聯操作Score

如果有人有更好的方法來做到這一點,請添加,但我認為這符合我目前的需求。

暫無
暫無

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

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