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

如何使用mutate匹配条件时粘贴列名?(患者风险因素统计场景)

解决方案

提取每行对应的风险项列名

在现有代码基础上,用pmap_chr遍历每行数据,筛选出值为"risk"的列名并拼接成字符串,同时排除patient列避免干扰:

library(tidyverse)

df = data.frame(
  patient = seq(1:60),
  cancer = c("risk","ok"), 
  blood_pres = c("risk", "ok"),
  low_education = c("risk","ok")
) 

df = df %>% 
  mutate(
    how_many_risks = rowSums(select(., -patient) == "risk"),
    risk_items = pmap_chr(select(., -patient), ~{
      current_row <- c(...)
      names(current_row)[current_row == "risk"] %>% 
        str_c(collapse = ", ")
    })
  )

找出最普遍的风险项(众数)

将数据转为长格式,统计各风险项的出现次数,排序后取次数最多的项:

# 统计各风险项出现频率
risk_frequency = df %>% 
  pivot_longer(cols = -patient, names_to = "risk_factor", values_to = "status") %>% 
  filter(status == "risk") %>% 
  count(risk_factor, sort = TRUE)

# 获取最普遍的风险项
most_common_risk = risk_frequency$risk_factor[1]

补充说明

  • select(., -patient)确保只处理风险相关列,避免patient列干扰计算逻辑。
  • pmap_chr逐行处理传入的列值,筛选出标记为"risk"的列名并拼接,适合生成每行的风险项清单。
  • 转长格式后统计频率的方式,能清晰呈现所有风险项的分布,排序后的第一项即为众数风险项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:29:57