使用 dplyr 组内的累积计数

Shi*_*obe 5 r dplyr

我正在尝试创建一个包含另一列的累积计数的列。

我的数据:

df <- data.frame(brand = c("A","B","C","A","A","B","A","A","B","C"))
Run Code Online (Sandbox Code Playgroud)

这是我的预期输出:

    |Brand |  Count  |
    |:-----|--------:|
    |A     |        1|
    |B     |        1|
    |C     |        1|
    |A     |        2|
    |A     |        3|
    |B     |        2|
    |A     |        4|
    |A     |        5|
    |B     |        3|
    |C     |        2|
Run Code Online (Sandbox Code Playgroud)

我尝试过 cumsum 但它不接受字符串或因素:

df %>%
  group_by(Brand) %>%
  mutate(Count = cumsum(Brand))
Run Code Online (Sandbox Code Playgroud)

编辑:为了奖励积分,如果该解决方案也可以用于数据库表(SQL Server),那就太好了

akr*_*run 7

rowid我们可以创建带有“品牌”的列

library(dplyr)
library(data.table)
 df %>%
    mutate(Count = rowid(brand))
Run Code Online (Sandbox Code Playgroud)

或者使用row_number按“品牌”分组后

df %>%
    group_by(brand) %>%
    mutate(Count = row_number())
Run Code Online (Sandbox Code Playgroud)

或者使用data.table

library(data.table)
setDT(df)[, Count := rowid(brand)]
Run Code Online (Sandbox Code Playgroud)