我有这个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)很重要,有没有简单的方法呢? 谢谢
答案 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