我是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
有很多方法可以计算分组平均值。你一直试图做的是通过 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))
你可以做:
korgiweight <- mean(df$Weight.kg.[df$Breed == 'korgi'], na.rm = TRUE)