dyplr 多个过滤器来更新派生字段。改变派生字段的循环组。 group_by %>% 变异 |过滤 %>% 变异

问题描述 投票:0回答:0

问题

需要将新的计算列添加到现有的 data.frame 中。这是最简单的部分:变异和赋值。现在我有一个包含 8 个类别的分类列,对于每个类别,我需要分配一组经过过滤的行来计算该人口行范围的死亡率。

想法解决方案是处理单独的独特类别,例如伤害死亡机制。每个类别组将通过过滤后的年龄组分配。

数据有5个年龄组和10类伤害死亡机制(数据示例如下)。对于每个单独的年龄组和每个单独的伤害死亡机制,需要根据此范围(死亡/人口)计算死亡率。我对年龄组的过滤器使用 grep 方法针对这个因式分解的年龄组。

年龄组的基本设置,对每个年龄组重复。以下内容仅适用于 15 岁;需要对所有 5 个年龄组进行处理,并对每个单独的伤害死亡机制进行子处理,并计算派生率。现在我为每个年龄组都有单独的特定代码行。

df_age_15 <- df_age_15 %>%
  mutate(AgeGrp.DRate = 0)

df_age_15 <- df_suicide_data %>%
  filter(grepl('15', as.character(Age.Group)))
...
...

在此代码中,我试图通过 1) 过滤的 15 岁,2) 按伤害分组来设置死亡率的年龄组突变。机制,突变 AgeGrp.DRate。这是一个很有前途的简短方法。但它没有按需要工作。没有更新 AgeGrp.DRate。

df_age_15 <- df_age_15 %>%
  group_by(Injury.mechanism) %>%
    mutate(AgeGrp.DRate <- df_age_15$Deaths / df_age_15$Population * 1000 * 100)
...
...
... repeated for each age group, and grouped by Injury.mechanism

在这段代码中,我试图为死亡率设置一个年龄组的突变 1) 针对特定的伤害过滤。机制(有 10 个执行相同,然后突变 AgeGrp.DRate。在这段代码中,只有过滤器()执行。变异没有执行。

df_age_15 <- df_age_15 %>%
  filter(grepl('Cut', as.character(Injury.mechanism))) #%>% 
    mutate(AgeGrp.DRate <- df_age_15$Deaths / df_age_15$Population * 1000 * 100)

df_age_15 %>%
  filter(grepl('Drwn', as.character(Injury.mechanism))) #%>% 
    mutate(AgeGrp.DRate <- df_age_15$Deaths / df_age_15$Population * 1000 * 100)
...
...
... repeated for each age group and each Injury.Mechanisms Levels: All Mechanisms, Cut, Drwn, Fall, Hot, Firearm, OT, Poison, Unspecified, Suff, All Other Specified

问题逻辑的数据示例

Age.Group Levels: < 15, 15–24, 25–44, 45–64, 65–74, 75+, All Ages
Injury.Mechanisms Levels All Mechanisms, Cut, Drwn, Fall, Hot, Firearm, OT, Poison, Unspecified, Suff, All Other Specified
r dplyr group-by mutate
© www.soinside.com 2019 - 2024. All rights reserved.