数据帧R中的不同列的总和/平均值

时间:2014-02-10 14:26:24

标签: r

我在数据框中有4列

a <- data.frame(a=c(1,2,3,4), b=c(4,5,6,7), c=c(7,6,5,4), d=c(8,4,3,2))

我想平均前两列和最后两列,以获得一个数据框,其中两列具有相同的nrows,平均前两列,后两列

预期产出:

5 15
7 10
9 8
11 6

1 个答案:

答案 0 :(得分:1)

重现你的输出(这是总和,而不是意思):

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]

您可以在此按顺序访问列。或者,您只需在names(a) <- letters[1:4]之前运行ddply()

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