,我有以下的数据帧:与列名的变量名中使用聚合
a <- c(1,1,4)
b <- c(1,0,2)
c <- data.frame(a=a,b=b)
str(c)
# a b
#1 1 1
#2 1 0
#3 4 2
我想聚集以下列方式将数据帧C:
aggregate(b~a,FUN=mean,data=c)
# a b
#1 1 0.5
#2 4 2.0
然而,我的主问题是,我将使用一个变量的列名
所以:
d <- 'a'
如果我尝试使用这个变量d包含列名聚集,我显然会得到一个错误:
aggregate(b~d,FUN=mean,data=c)
#Error in model.frame.default(formula = b ~ d, data = c) : variable lengths differ (found for 'd')
这工作,但后来我得到愚蠢的列名。我想避免重命名列的额外步骤:
aggregate(c[,'b']~c[,d],FUN=mean,data=c)
# c[, d] c[, "b"]
#1 1 0.5
#2 4 2.0
如何聚合并获得正确的列名第一次尝试? (也许是没有办法做到这一点)
我想知道为什么这会产生与我使用的不同的列名称。 – Michal 2014-12-01 19:12:52
@Michal您在使用'aggregate.data.frame'时使用'formula'方法,即'aggregate.formula'您可以检查'stats ::: aggregate.formula'和'aggregate.data的源代码。框架' – akrun 2014-12-01 19:15:46