这里有两个示例代码,都旨在展示/测试 R 统计包中的 aggregate((。我从这里获取的第一个:
attach(mtcars)
aggdata <-aggregate(mtcars, by=list(cyl,vs),
FUN=mean, na.rm=TRUE)
print(aggdata)
这将返回它应该返回的内容:
Group.1 Group.2 mpg cyl disp hp drat wt qsec vs am gear carb
1 4 0 26.00000 4 120.30 91.0000 4.430000 2.140000 16.70000 0 1.0000000 5.000000 2.000000
2 6 0 20.56667 6 155.00 131.6667 3.806667 2.755000 16.32667 0 1.0000000 4.333333 4.666667
3 8 0 15.10000 8 353.10 209.2143 3.229286 3.999214 16.77214 0 0.1428571 3.285714 3.500000
4 4 1 26.73000 4 103.62 81.8000 4.035000 2.300300 19.38100 1 0.7000000 4.000000 1.500000
5 6 1 19.12500 6 204.55 115.2500 3.420000 3.388750 19.21500 1 0.0000000 3.500000 2.500000
现在让我们尝试我写的一个简短的代码来测试 aggregate((:
a = data.frame('t'=c(6,7),'u'=c(8,9),'house' = c(1,2))
b = data.frame('t'=c(1,2),'u'=c(3,4),'house' = c(2,3))
c = rbind(a,b)
aggregate(c,by=list(house),FUN=mean,na.rm=TRUE)
我完全迷失了。我找不到任何原因,为什么我的测试用例与第一个示例用例不同,但它返回了不同的结果:
Error in aggregate.data.frame(c, by = list(house), FUN = mean, na.rm = TRUE) :
object 'house' not found
这里可能有什么问题?第一个和第二个测试用例有何不同?我错过了什么?
您应该在运行该代码之前附加数据集:
attach(c)
aggregate(c,by=list(house),FUN=mean,na.rm=TRUE)
您还可以在聚合函数中定义变量 house,如下所示:
aggregate(c,by=list(c$house),FUN=mean,na.rm=TRUE)
希望这有帮助。