如何找到一个表中只有部分行的平均数?

问题描述 投票:0回答:2

我是R的新手,正在做一些基本的事情。我想知道如何才能只为一些行找到平均数。例如,我怎么能只找到korgi的平均重量?(实际上有100行而不是8行,1-50行是korgi)我试过了 korgiweight <-aggregate(mytabledata[1:50], list(mytabledata$Weight(kg), mean) 但它说'未定义列选择'谢谢。

**Breed Weight(kg)** Korgi 10 korgi 11 korgi 10.5 korgi 12 husky 20 husky 24 husky 26 husky 25

r aggregate subset mean
2个回答
2
投票

有很多方法可以计算分组平均值。你一直试图做的是通过 aggregate. 它的工作原理是这样的。

aggregate(weight ~ species, data = df, mean)
  species weight
1   Korgi   18.8
2     XYZ   17.9

如果你想只计算某个范围内的行的平均数,你需要在这个范围内子集数据框或两个变量。

aggregate(weight ~ species, data = df[1:10,], mean)
# or:
aggregate(weight[1:10] ~ species[1:10], data = df, mean)

  species[1:10] weight[1:10]
1         Korgi         18.8 

一个相关的函数是 tapply,它应用了一个函数,这里是 mean,到一个表格。

tapply(df$weight, df$species, mean)
Korgi   XYZ 
 18.8  17.9 

说明性数据。

set.seed(123)
df <- data.frame(species = c(rep("Korgi", 10), rep("XYZ", 10)),
                 weight = sample(10:25, 20, replace = T))

0
投票

你可以做:

korgiweight <- mean(df$Weight.kg.[df$Breed == 'korgi'], na.rm = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.