【发布时间】:2014-12-01 18:47:11
【问题描述】:
我有以下数据框:
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
如何在第一次尝试聚合并获得正确的列名? (也许没有办法做到这一点)
【问题讨论】: