如何通过 dplyr 做 2 组的 cumsum?
How to do cumsum of 2 groups by dplyr?
我写了下面的代码:
set.seed(20)
dat <- data.frame(item=c(rep("i1", 10), rep("i2", 10)),
choice=c(sample(1:4, 20, replace = TRUE)))
我需要通过2项得到每个选项的累加和:
item choice n cumsum
1 i1 1 2 2
2 i1 2 3 5
3 i1 3 1 6
4 i1 4 4 10
5 i2 1 3 3
6 i2 2 3 6
7 i2 3 2 8
8 i2 4 2 10
我写了:
dat %>%
group_by(item, choice) %>%
count() %>%
mutate(n) %>%
mutate(cum=cumsum(n))
并得到:
item choice n cum
<fct> <int> <int> <int>
1 i1 1 2 2
2 i1 2 3 3
3 i1 3 1 1
4 i1 4 4 4
5 i2 1 3 3
6 i2 2 3 3
7 i2 3 2 2
8 i2 4 2 2
我应该如何修改我的代码以获得我需要的东西?
看来你刚好需要
dat %>%
group_by(item, choice) %>%
summarize(n=n()) %>%
mutate(cum = cumsum(n))
您已按 item
和 choice
对数据进行了分组。为了获得每个 item
的累计总和,只需在汇总数据后按 item
对其进行分组:
dat %>%
group_by(item, choice) %>%
count() %>%
group_by(item) %>%
mutate(cum=cumsum(n))
这将 return:
# A tibble: 8 x 4
# Groups: item [2]
item choice n cum
<fct> <int> <int> <int>
1 i1 1 2 2
2 i1 2 3 5
3 i1 3 1 6
4 i1 4 4 10
5 i2 1 3 3
6 i2 2 3 6
7 i2 3 2 8
8 i2 4 2 10
我写了下面的代码:
set.seed(20)
dat <- data.frame(item=c(rep("i1", 10), rep("i2", 10)),
choice=c(sample(1:4, 20, replace = TRUE)))
我需要通过2项得到每个选项的累加和:
item choice n cumsum
1 i1 1 2 2
2 i1 2 3 5
3 i1 3 1 6
4 i1 4 4 10
5 i2 1 3 3
6 i2 2 3 6
7 i2 3 2 8
8 i2 4 2 10
我写了:
dat %>%
group_by(item, choice) %>%
count() %>%
mutate(n) %>%
mutate(cum=cumsum(n))
并得到:
item choice n cum
<fct> <int> <int> <int>
1 i1 1 2 2
2 i1 2 3 3
3 i1 3 1 1
4 i1 4 4 4
5 i2 1 3 3
6 i2 2 3 3
7 i2 3 2 2
8 i2 4 2 2
我应该如何修改我的代码以获得我需要的东西?
看来你刚好需要
dat %>%
group_by(item, choice) %>%
summarize(n=n()) %>%
mutate(cum = cumsum(n))
您已按 item
和 choice
对数据进行了分组。为了获得每个 item
的累计总和,只需在汇总数据后按 item
对其进行分组:
dat %>%
group_by(item, choice) %>%
count() %>%
group_by(item) %>%
mutate(cum=cumsum(n))
这将 return:
# A tibble: 8 x 4
# Groups: item [2]
item choice n cum
<fct> <int> <int> <int>
1 i1 1 2 2
2 i1 2 3 5
3 i1 3 1 6
4 i1 4 4 10
5 i2 1 3 3
6 i2 2 3 6
7 i2 3 2 8
8 i2 4 2 10