如何对每年的项目进行汇总,并键入合计总数-R
我有一个数据框架,其中包含每年创建的不同类型的新项目数量:如何对每年的项目进行汇总,并键入合计总数-R,r,R,我有一个数据框架,其中包含每年创建的不同类型的新项目数量: # Sample data df = data.frame(n_new = c(1, 1, 2, 4, 5, 3), type = c("a", "b", "a", "b", "a", "a"), year = c(2000, 2000, 2001, 2003, 2004, 2005)) df # n_new type year
# Sample data
df = data.frame(n_new = c(1, 1, 2, 4, 5, 3),
type = c("a", "b", "a", "b", "a", "a"),
year = c(2000, 2000, 2001, 2003, 2004, 2005))
df
# n_new type year
# 1 1 a 2000
# 2 1 b 2000
# 3 2 a 2001
# 4 4 b 2003
# 5 5 a 2004
# 6 3 a 2005
由于这些项目在随后的几年中继续存在,我想将它们聚合为不断增长的现有项目总数,针对每种类型
# Expected result
df$n_total = c(1, 1, 3, 5, 8, 11)
df
# n_new type year n_total
# 1 1 a 2000 1
# 2 1 b 2000 1
# 3 2 a 2001 3
# 4 4 b 2003 5
# 5 5 a 2004 8
# 6 3 a 2005 11
为此,我尝试将每个值(每种类型)与上一年的值相加
df$n_total[df$type = "a"] <- df$n_new[df$type = "a"] +
df$n_new[df$type = "a" & df$year - 1]
# It obviously doesn't work ;-)
df$n_total[df$type=“a”]您可以使用dplyrgroup_by
函数加上mutate
和cumsum
,如下所示:
library(dplyr)
df = data.frame(n_new = c(1, 1, 2, 4, 5, 3),
type = c("a", "b", "a", "b", "a", "a"),
year = c(2000, 2000, 2001, 2003, 2004, 2005))
df$n_total<-cumsum(df$n_new)
df %>%group_by(type) %>% mutate(ntotalbytype = cumsum(n_new))
库(dplyr)
df=data.frame(n_new=c(1,1,2,4,5,3),
类型=c(“a”、“b”、“a”、“b”、“a”、“a”),
年份=c(2000、2000、2001、2003、2004、2005))
df$n_总计%group_by(type)%%>%mutate(ntotalbytype=cumsum(n_new))
结果:
n_new type year ntotalbytype
<dbl> <fctr> <dbl> <dbl>
1 1 a 2000 1
2 1 b 2000 1
3 2 a 2001 3
4 4 b 2003 5
5 5 a 2004 8
6 3 a 2005 11
n_新类型年ntotalbytype
1 a 2000 1
2 1 b 2000 1
3 2 a 2001 3
4 b 2003 5
5 a 2004 8
6 3 a 2005 11
查看:?谢谢您的回答!后来我才意识到,我不能使用cumsum()
只对每种类型的计数求和(我认为这很简单,但我没有找到解决方案)。因此,我对我的问题做了一点修改,增加了难度。没问题,请看上面对答案的编辑。