【问题标题】:r: append mean of a subset of columns by namer:按名称附加列子集的平均值
【发布时间】:2016-12-14 05:07:12
【问题描述】:

我有这个 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

考虑到列名(网络访问)很重要,有没有一种简单的方法可以做到这一点? 谢谢

【问题讨论】:

    标签: r append mean


    【解决方案1】:

    我们将数据集分为两部分(df[1:2]df[3:4]),获取差异,然后使用rowMeans,我们找到mean,使用transform 创建一个新列“differenceMean”。

    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
    

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 2016-07-04
        • 2012-03-09
        • 2021-07-21
        • 2019-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多