我正试图强制我的数据集,以便将0-1和1-4的死亡率数据合并在一起,以创建90岁以下的0-4、5-9、10-14等年龄类别。我的数据是长格式。
我使用dplyr尝试使用if_else和summarise()将0-1和1-4的死亡率数据汇总在一起,但是我所应用的任何代码迭代都只是生成了我原来拥有的相同数据集,即代码是不能将我的数据合并在一起。
head(death_popn_long) #cause_death variable content removed for brevity
Year deprivation_decile Sex cause_death ageband deaths popn
1 2017 1 Male NA 0 0 2106
2 2017 1 Male NA 0 0 2106
3 2017 1 Male NA 0 0 2106
4 2017 1 Male NA 0 0 2106
5 2017 1 Male NA 0 0 2106
6 2017 1 Male NA 0 0 2106
#Attempt to merge ageband 0-1 & 1-4 by summarising combined death counts
test <- death_popn_long %>%
group_by(Year, deprivation_decile, Sex, cause_death, ageband) %>%
summarise(deaths = if_else(ageband %in% c("0", "1"), sum(deaths),
deaths))
我希望死亡变量是这些年龄段的组合死亡计数(即0-1和1-4的总和),但是我尝试使用的任何上述替代代码都只是重新创建了我以前拥有的数据集
答案 0 :(得分:0)
如果您打算操纵其组,则不想在ageband
语句中使用group_by
。您需要创建新版本的ageband
,然后按此分组:
test <- death_popn_long %>%
mutate(new_ageband = if_else(ageband %in% c("0", "1"), 1, ageband)) %>%
group_by(Year, deprivation_decile, Sex, cause_death, new_ageband) %>%
summarise(deaths = sum(deaths))
如果您想要一个略短的版本,可以在new_ageband
子句中定义group_by
而不是预先使用mutate
动词。我只是这样做是为了明确。
此外,对于将来的SO问题-在您的问题中提供数据非常有用(使用类似dput
的东西)。 :)