我有一个这种形式的数据框
salary crit1 crit2 crit3
1 41000 TRUE TRUE ...
2 50000 TRUE FALSE ...
3 39500 FALSE FALSE
4 40500 TRUE FALSE
5 75000 FALSE FALSE
现在我想使用一些R脚本按照标准crit1,crit2,crit3计算聚合...所以我希望聚合包括每个标准为TRUE的那些行,例如所有行的平均值/中值/最大值为crit1为TRUE,所有行的平均值/中值/最大值为crit2为TRUE等等。我 NOT 对标准的组合感兴趣。
有点像这样
crit1 crit2 crit3
average 43833.33 40250 ...
median 40500 40250
max 50000 41000
根据我发现的相关帖子和网页,似乎ddply from the plyr package可能会有所帮助,但无法弄清楚如何避免我通过组合获得聚合标准。
答案 0 :(得分:2)
您需要一个可重复性最小的示例:
#set up some data
set.seed=129
sdt <- data.frame( sal=round(rgamma(10,5,1/8000),-2),
crit1=sample(c(TRUE,FALSE),10,replace=TRUE),
crit2=sample(c(TRUE,FALSE),10,replace=TRUE))
现在:
byl <- function(ind,x) summary(x[ind])
sapply(sdt[,-1],byl,sdt[,1])
做了你似乎要求的事情。
答案 1 :(得分:-2)
另一种方法是使用聚合函数。例如:
aggregate(salary~crit1+crit2+crit3, DatasetName, mean)
按所有三个标准产生平均工资
你可以用其他统计数据替换均值。