你需要使用cbind
它。
cbind(sum(data[data$var1==1,]$var2),mean(data[data$var1==1,]$var2),max(data[data$var1==1,]$var2))
使用 mtcars 数据的示例
mydata<-mtcars
l<-cbind(sum(mydata[mydata$cyl==4,]$mpg),mean(mydata[mydata$cyl==4,]$mpg),max(mydata[mydata$cyl==4,]$mpg))
l<-data.frame(l)
names(l)<-c("sum","mean","max")
> l
sum mean max
1 293.3 26.66364 33.9
plyr 包中有一个ddply
函数可以为 var1 的每个类别执行所有操作(此处为 cyl)
library(plyr)
ddply(mydata,.(cyl),summarize, sum=sum(mpg),mean=mean(mpg), max=max(mpg))
ddply(mydata,.(cyl),summarize, sum=sum(mpg),mean=mean(mpg), max=max(mpg))
cyl sum mean max
1 4 293.3 26.66364 33.9
2 6 138.2 19.74286 21.4
3 8 211.4 15.10000 19.2