gpt4 book ai didi

r - 累计计算不同年份的不同用户总数

转载 作者:行者123 更新时间:2023-12-05 09:34:32 27 4
gpt4 key购买 nike

假设我有一个像这样的 data.frame:

user_df = read.table(text = "id industry year
1 Government 1999
2 Government 1999
3 Government 1999
4 Private 1999
5 NGO 1999
1 Government 2000
2 Government 2000
3 Government 2000
4 Government 2000
1 Government 2001
5 Government 2001
2 Private 2001
3 Private 2001
4 Private 2001", header = T)

对于每个用户,我都有一个唯一的 id , industry , 和 year .

我正在尝试计算曾曾在政府工作过的人数的累计数,因此累计数应该是当年和之前所有年份的唯一用户总数.

我知道我可以像这样做一个普通的累加和:

user_df %>% group_by(year, industry) %>% summarize(cum_sum = cumsum(n_distinct(id)))

year industry cum_sum
<int> <chr> <int>
1 1999 Government 3
2 1999 NGO 1
3 1999 Private 1
4 2000 Government 4
5 2001 Government 2
6 2001 Private 3

但是,这不是我想要的,因为今年的总和 20002001将包括已包含在 1999 中的人员.我希望每一年都是在给定年份曾在政府部门工作过的唯一用户总数的累积计数。我在 dplyr 中找不到正确的方法.

所以正确的输出应该是这样的:

   year industry   cum_sum
<int> <chr> <int>
1 1999 Government 3
2 1999 NGO 1
3 1999 Private 1
4 2000 Government 4
5 2001 Government 5
6 2001 Private 3

最佳答案

一个选项可能是:

user_df %>%
group_by(industry) %>%
mutate(cum_sum = cumsum(!duplicated(id))) %>%
group_by(year, industry) %>%
summarise(cum_sum = max(cum_sum))

year industry cum_sum
<int> <fct> <int>
1 1999 Government 3
2 1999 NGO 1
3 1999 Private 1
4 2000 Government 4
5 2001 Government 5
6 2001 Private 3

关于r - 累计计算不同年份的不同用户总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66537151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com