1

我想在我的数据集中创建一个名为“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 循环,它可以让我按类型获得这个“滚动总和”。

4

1 回答 1

2

我们可以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
于 2021-07-22T19:06:42.353 回答