【问题标题】:How to get tally (rolling sum) by group in R?如何在R中按组获得计数(滚动总和)?
【发布时间】:2021-09-30 01:20:15
【问题描述】:

我想在我的数据集中创建一个名为“tally”的列,用于计算每种类型和排名的总和。

type <- c("A","A","A","B","B","C")
rank <- c("low", "med", "high","med", "high", "low")
count <- c(9,20,31,2,4,14)

df <- data.frame(type, rank, count)

我想要的输出是:

type rank count tally
1    A  low     9     9
2    A  med    20    29
3    A high    31    60
4    B  med     2     2
5    B high     4     6
6    C  low    14    14 

我想另一种描述它的方式是滚动总和(考虑到从低到高的顺序)?我环顾四周,但找不到任何好的功能来做到这一点。理想情况下,我可以有一个 for 循环,让我可以按类型获取这个“滚动总和”。

【问题讨论】:

    标签: r for-loop dplyr rolling-sum


    【解决方案1】:

    我们可以在按'type'分组后使用cumsum

    library(dplyr)
    df <- df %>%
       group_by(type) %>%
        mutate(tally = cumsum(count)) %>%
        ungroup
    

    -输出

    # A tibble: 6 x 4
      type  rank  count tally
      <chr> <chr> <dbl> <dbl>
    1 A     low       9     9
    2 A     med      20    29
    3 A     high     31    60
    4 B     med       2     2
    5 B     high      4     6
    6 C     low      14    14
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2020-02-10
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 2021-07-02
      • 2013-06-07
      相关资源
      最近更新 更多