我正在尝试创建一个包含另一列的累积计数的列。
我的数据:
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),那就太好了
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)