R 使用聚合查找“的函数(平均值)”;所有其他;
我一直在玩弄R 使用聚合查找“的函数(平均值)”;所有其他;,r,aggregate,R,Aggregate,我一直在玩弄aggregate和plyr——搜索了这么多——但似乎没有弄明白这一点 我试图得到给定变量“所有其他”的平均值。因此,我可以使用aggregate获得var在组中每一个变量的平均值——是的,变量是字符,必须转义:-( 我想做的是: 仅-的平均值,然后分别 所有其他变量(/*#)或非--组合的平均值 因此,在下面的示例数据中,-的平均值为2,“所有其他”的平均值为4 真正的数据集要长得多(1000行),更复杂,也更易变,所以单独输入“所有其他”是没有意义的——我认为像~。这样的方法是可
aggregate
和plyr
——搜索了这么多——但似乎没有弄明白这一点
我试图得到给定变量“所有其他”的平均值。因此,我可以使用aggregate
获得var
在组
中每一个变量的平均值——是的,变量是字符,必须转义:-(
我想做的是:
仅-
的平均值,然后分别
所有其他变量(/*#
)或非--
组合的平均值
因此,在下面的示例数据中,-
的平均值为2,“所有其他”的平均值为4
真正的数据集要长得多(1000行),更复杂,也更易变,所以单独输入“所有其他”是没有意义的——我认为像~。
这样的方法是可行的
group var
- 4
- 0
- 2
/ 2
/ 5
* 3
* 7
* 3
# 4
structure(list(group = structure(c(1L, 1L, 1L, 3L, 3L, 2L, 2L,
2L), .Label = c("-", "*", "/"), class = "factor"), var = c(4L,
0L, 2L, 2L, 5L, 3L, 7L, 3L)), .Names = c("group", "var"), class = "data.frame", row.names = c(NA,
-8L))
1)聚合。公式试试:
aggregate(var ~ group, transform(DF, group = ifelse(group == "-", "-", "other")), mean)
给予:
group var
1 - 2
2 other 4
group var
1 - 2
2 other 4
2)aggregate.data.frame或者可以这样写:
group <- ifelse(DF$group == "-", "-", "other")
aggregate(DF["var"], data.frame(group), mean)
这将返回组的平均值“-”
这将返回除“-”以外的所有内容的平均值
这将返回除“-”以外各组的平均值
df1I打算建议aggregate(var~group==“-”,DF,mean)
,但我也喜欢ifelse
的输出+1.
mean(df[which(df$group=="-"),]$var)
[1] 2
mean(df[which(df$group!="-"),]$var)
[1] 4
df1<-df[which(df$group!="-"),]
ddply(df1,.(group),summarise,mean=mean(var))
group mean
1 * 4.333333
2 / 3.500000
3 # 4.000000