重现您的输出(这是总和,而不是平均值):
library(plyr)
ddply(a, .(), summarise, first=a+b, second=c+d)[,-1]
它产生:
first second
1 5 15
2 7 10
3 9 8
4 11 6
用平均值制作data.frame:
ddply(a, .(), summarise, first=(a+b)/2, second=(c+d)/2)[,-1]
输出是:
first second
1 2.5 7.5
2 3.5 5.0
3 4.5 4.0
4 5.5 3.0
如果你不知道列名代码可以这样修改:
ddply(a, .(), summarise, first=a[,1]+a[,2], second=a[,3]+a[,4])[,-1]
您可以在此处按顺序访问列。或者,您可以在 ddply() 之前运行 names(a) <- letters[1:4]。
ddply 是一个非常灵活的函数,你可以指定分组变量作为第二个参数并得到分组结果。但是如果情况和问题一样简单,您可以直接致电summarise:
summarise(a, first=a+b, second=c+d) # if you know columns' names
summarise(a, first=a[,1]+a[,2], second=a[,3]+a[,4]) # if you don't know columns' names