r:按名称追加列子集的平均值

时间:2016-08-08 12:13:09

标签: r append mean

我有这个df:

          webvisits1   webvisits2  webvisits3 webvisits4
s001          2            0           11           2
s002          11           2           23           3
s003          12           1            1           5
s004          13           5            5           0
s005          4            3            9           3

我需要创建一个输出数据框,其中添加的列包含webvisits(3-4)和webvisits(1-2)的平均值之间的差异,如下所示:

          webvisits1   webvisits2  webvisits3 webvisits4 difference_mean
s001          2            0           11           2        -5.5
s002          11           2           23           3        -6.5
s003          12           1            1           5         3.5
s004          13           5            5           0         6.5
s005          4            3            9           3        -2.5

考虑到列名(webvisits)很重要,有没有简单的方法呢? 谢谢

2 个答案:

答案 0 :(得分:1)

rowSums函数可以对每个变量的行求和,然后找到现有变量之间的差异并取其均值

library(dplyr)
 dt %>%
  mutate(difference_mean = (rowSums(dt[,2:3])-rowSums(dt[,4:5]))/2)

s.no webvisits1 webvisits2 webvisits3 webvisits4 difference_mean
1 s001          2          0         11          2            -5.5
2 s002         11          2         23          3            -6.5
3 s003         12          1          1          5             3.5
4 s004         13          5          5          0             6.5
5 s005          4          3          9          3            -2.5

答案 1 :(得分:0)

我们将数据集分为两个(df[1:2]df[3:4]),得到差异,然后与rowMeans我们找到mean,创建一个新列&#39 ; differenceMean'使用transform

df <- transform(df, differenceMean = rowMeans(df[1:2]- df[3:4]))
df 
#     webvisits1 webvisits2 webvisits3 webvisits4 differenceMean
#s001          2          0         11          2           -5.5
#s002         11          2         23          3           -6.5
#s003         12          1          1          5            3.5
#s004         13          5          5          0            6.5
#s005          4          3          9          3           -2.5