如何使用dplyr R获得两列的总和和平均值

时间:2016-06-19 17:45:51

标签: r

我的栏目如下

EndoID      NumBx     CStage
1            2          1
1            8          1
1            3          1
2            1          4
3            2          10
3            1          10
4            3          3

每个EndoId的Cstage都是相同的

我想得到每个EndoId的NumBx总和,但我也希望在结果中看到CStage。到目前为止,我无法看到C阶段

这是我的代码

GroupedByEndo <- PragueSubset %>% group_by(EndoID) %>% summarise(Sum = sum(NumBx))

我喜欢的输出是:

EndoID         NumBx     CStage
    1            13         1
    2            1          4
    3            3          10
    4            3          3

但我得到了

 EndoID         NumBx     
        1            13         
        2            1          
        3            3         
        4            3    

3 个答案:

答案 0 :(得分:2)

您可以找到SCstage的meanfirst

PragueSubset <- read.table(header = TRUE, text = 
"EndoID      NumBx     CStage
1            2          1
1            8          1
1            3          1
2            1          4
3            2          10
3            1          10
4            3          3")

GroupedByEndo <- PragueSubset %>% 
                   group_by(EndoID) %>% 
                   summarise(Sum = sum(NumBx), CStage = first(CStage))
GroupedByEndo 
Source: local data frame [4 x 3]

  EndoID   Sum CStage
   (int) (int)  (int)
1      1    13      1
2      2     1      4
3      3     3     10
4      4     3      3

答案 1 :(得分:1)

这是一个有点hacky解决方案,但它完成了这项工作。

 df  %>% group_by(EndoID) %>%
         mutate(NumBoxS = sum(NumBx), Cstage2 = mean((CStage)))  %>%
         summarise_each(funs = "mean")  %>% select(-c(NumBx, Stage))

 Source: local data frame [4 x 3]

  EndoID NumBoxS Cstage2
   (int)   (dbl)   (dbl)
1      1      13       1
2      2       1       4
3      3       3      10
4      4       3       3

答案 2 :(得分:1)

你可以得到你要求的结果:

{{1}}