我有
> df=data.frame(name=c(rep('a',5),rep('b',4)),Value=rnorm(9,30,1))
> a=aggregate(df$Value,list(df$name),function(x)c(summary(x),length(x),sd(x)))
> df
name Value
1 a 30.83432
2 a 30.59692
3 a 30.16761
4 a 29.75632
5 a 30.56168
6 b 27.54306
7 b 29.20575
8 b 30.59607
9 b 29.75491
> a
Group.1 x.Min. x.1st Qu. x.Median x.Mean x.3rd Qu. x.Max. x.V7 x.V8
1 a 29.7600000 30.1700000 30.5600000 30.3800000 30.6000000 30.8300000 5.0000000 0.4244106
2 b 27.5400000 28.7900000 29.4800000 29.2700000 29.9700000 30.6000000 4.0000000 1.2884043
我想将该函数用于另一个函数,但不知道如何访问它。 我不能用$ x.Mean调用列,因为只有2列
> dim(a)
[1] 2 2
> colnames(a)
[1] "Group.1" "x"
我不想保存然后读取它,因为实际的df非常大。
任何人都可以指导我如何访问聚合表的不同列。作为额外的,也可以重命名每个计算字段
答案 0 :(得分:0)
答案在这里:R: results from aggregate with multiple functions not usable in further calculations. WHY?
一旦我聚合,我转换为列表,然后转换为data.frame
> as.data.frame(as.list(a))
Group.1 x.Min. x.1st.Qu. x.Median x.Mean x.3rd.Qu. x.Max. x.V7 x.V8
1 a 29.76 30.17 30.56 30.38 30.60 30.83 5 0.4244106
2 b 27.54 28.79 29.48 29.27 29.97 30.60 4 1.2884043
> dim(as.data.frame(as.list(a)))
[1] 2 9
>
答案 1 :(得分:0)
您可以x.Mean
访问a$x[,4]
列。如果要更改用于names(a) <- c("Name", "Value")
的列的名称。如果您要更改x.Mean, x.Min,...
名称,请使用colnames(a$x) <- c("Min", "FQ",...)
,或者如果您只想更改一列,请使用colnames(a$x)[1] <- "Min"
。请注意,由于我将x名称更改为“值”,因此您还需要将colnames(a$x)
更改为colnames(a$Value)
。