【问题标题】:How do I use the case_when function with complex conditions in R?如何在 R 中使用具有复杂条件的 case_when 函数?
【发布时间】:2022-01-20 19:06:48
【问题描述】:

我有一份手术前后疼痛、功能和健康评分的患者名单。我想用一个标准来决定每个患者在手术后是否有所改善。

标准很复杂,我想使用 dplyr 包和 case_when 函数添加一个额外的列 - 改进 - 根据标准结果是或否。

标准如下:

如果满足以下条件,则认为患者有所改善:

  1. 疼痛或功能评分变化 >50% 且任一评分的绝对值变化 >20。

如果满足 2/3 标准,则认为患者有所改善:

  1. 疼痛评分变化 >20% 且绝对值变化 >10。
  2. 功能得分变化 >20%,绝对值变化 >10。
  3. 幸福指数变化 >20%,绝对值变化 >10。

【问题讨论】:

  • 这将有助于制作一些示例数据。例如。 data.frame(patient = 1:3, pain_pre = c(30, 50, 60), pain_post = c(15, 25, 65))
  • 没有可重现的例子,很难提供具体的解决方案。我觉得case_when 可能不是最好的方法。
  • 欢迎来到 SO,Yushy Zhou!您谈到像 pain changedabsolute value has changed 这样的变量,但这些变量可能是模棱两可的。这是复合逻辑语句的简单应用,几乎可以肯定,但这里有太多的不确定性,甚至无法开始为您提供工作代码。请参阅stackoverflow.com/q/5963269minimal reproducible examplestackoverflow.com/tags/r/info

标签: r dplyr conditional-statements case


【解决方案1】:

没有代码,很难说,但这样的事情应该可以解决问题。这只是获得正确的条件组合的问题。

df_new = df %>% mutate(improvement = case_when(pain_score_change > 0.2 & function_score_change >0.2 & absolute_value >= 0.1  ~ "improved",
                                           function_score_change > 0.2 & wellbeing_score_change > 0.2 & absolute_value >= 0.1 ~ "improved",
                                           wellbeing_score_change > 0.2 & pain_score_change > 0.2 & absolute_value >= 0.1 ~ "improved",
                                           pain_score_change > 0.5 & wellbeing_change > 0.2 ~ "improved",
                                           pain_score_change > 0.2 & wellbeing_change > 0.5 ~ "improved")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2021-09-17
    • 1970-01-01
    • 2022-01-02
    • 2018-11-21
    • 2020-02-13
    • 2021-09-05
    相关资源
    最近更新 更多