如何在RStudio中聚合指定多行生成新行并汇总统计值?
解决方法
你可以用dplyr的case_when重新编码状态,再分组求和,以下两种方式都能实现需求:
方式一:基于已有的Results_Final_Status处理
Results_Final_Status_Combined <- Results_Final_Status %>% mutate(status = case_when( # 将指定的两个状态替换为OTHER status %in% c("+1 Lap", "+2 Laps") ~ "OTHER", # 其他状态保持不变 TRUE ~ status )) %>% # 按新的status分组 group_by(status) %>% # 汇总total值 summarise(total = sum(total)) %>% # 按total降序排列 arrange(-total)
方式二:直接从原始数据Results_Final生成结果(更高效)
跳过中间生成Results_Final_Status的步骤,直接在原始数据上处理:
Results_Final_Status_Combined <- Results_Final %>% mutate(status = case_when( status %in% c("+1 Lap", "+2 Laps") ~ "OTHER", TRUE ~ status )) %>% group_by(status) %>% # 直接统计每组数量 summarise(total = n()) %>% arrange(-total)
运行后得到的新数据框会是这样:
| status | total |
|---|---|
| Finished | 7083 |
| OTHER | 5443 |
| Engine | 2011 |
| Accident | 1044 |
之前用mutate+case_when报错,大概率是因为只修改了状态但没重新分组求和,或者case_when的语法有误(比如字符串没加引号、逻辑条件写错),按上面的步骤就能解决问题。
内容的提问来源于stack exchange,提问作者Tiago Veiga
相关产品推荐
相关产品推荐

