You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用dplyr基于group_by分组生成新的trauma分类列

dplyr解决方案:生成trauma分组列

原始数据框df:

> df
  RECNUM diag.letter diag.number C_DIAG
1      A           S           6  DS060
2      A           T          15  DT151
3      A           S           6 DS061A
4      B           S           6  DS064
5      C           S           6  DS061
6      C           S           6  DS066
7      D           S           2  DS020
8      D           S           2  DS021

数据定义代码

df <- data.frame(
  RECNUM = c("A", "A", "A", "B", "C", "C", "D", "D"),
  diag.letter = c("S", "T", "S", "S", "S", "S", "S", "S"),
  diag.number = c(6, 15, 6, 6, 6, 6, 2, 2),
  C_DIAG = c("DS060", "DT151", "DS061A", "DS064", "DS061", "DS066", "DS020", "DS021")
)

分组规则

  • 按RECNUM分组
  • 若分组行数>1,且满足以下任一条件,标记为Multi.TBI:
    • 组内所有行的diag.letter == "S"且diag.number == 6
    • 组内有多个行的C_DIAG属于c("DS020", "DS021", "DS029", "DS071")
  • 若不满足上述条件,但组内存在diag.letter为"T"的行,标记为Multitrauma
  • 其余情况标记为Iso.TBI

dplyr解决方案代码

library(dplyr)

df <- df %>%
  group_by(RECNUM) %>%
  mutate(
    # 统计组内符合指定C_DIAG的行数
    tbi_count = sum(C_DIAG %in% c("DS020", "DS021", "DS029", "DS071")),
    # 判断是否符合Multi.TBI的判定条件
    is_multi_tbi = n() > 1 & (all(diag.letter == "S" & diag.number == 6) | tbi_count >= 2),
    # 判断组内是否存在T类诊断
    has_t = any(diag.letter == "T"),
    # 根据规则生成trauma列
    trauma = case_when(
      is_multi_tbi ~ "Multi.TBI",
      has_t ~ "Multitrauma",
      TRUE ~ "Iso.TBI"
    )
  ) %>%
  # 移除中间辅助计算列
  select(-tbi_count, -is_multi_tbi, -has_t) %>%
  ungroup()

运行结果

> df
# A tibble: 8 × 5
  RECNUM diag.letter diag.number C_DIAG  trauma     
  <chr>  <chr>              <dbl> <chr>   <chr>      
1 A      S                      6 DS060   Multitrauma
2 A      T                     15 DT151   Multitrauma
3 A      S                      6 DS061A  Multitrauma
4 B      S                      6 DS064   Iso.TBI    
5 C      S                      6 DS061   Multi.TBI  
6 C      S                      6 DS066   Multi.TBI  
7 D      S                      2 DS020   Multi.TBI  
8 D      S                      2 DS021   Multi.TBI  

内容的提问来源于stack exchange,提问作者cmirian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:16:13