R:根据OR条件创建具有多个级别的新变量[重复]

Posted

技术标签:

【中文标题】R:根据OR条件创建具有多个级别的新变量[重复]【英文标题】:R: Create new variable with multiple levels based on OR conditions [duplicate] 【发布时间】:2018-09-14 09:48:50 【问题描述】:

我正在尝试基于包含不同治疗“NDC”代码的变量创建一个名为“txtype”(治疗类型)的新变量。在这个“txtype”变量中,我想创建多个级别来指示实际的治疗类型。

到目前为止,我只知道如何为实际治疗类型创建更高级别的变量:

 data$typeA <- data, NDC %in% c("11111", "22222", "33333"))

但我想做的是创建 data$txtype,其中 txtype 具有从 typeA 到 typeG 的 LEVELS。例如,在这个新变量 txtype 中,级别 typeA 的 NDC 为 11111、22222、33333; typeB 的 NDC 为 44444、55555 等,最多 7 种。

对于这个基本问题,如果已经发布了类似的内容,我提前道歉 - 如果您能指出正确的方向,我将不胜感激!

编辑:很抱歉这次编辑迟到了。 case_when 很优雅,但没有做我想要的!我正在尝试创建一个名为“txtype”的变量,其中包含多个名为“typeA”、“typeB”等的 LEVELS。下面是来自示例数据的两列,包括主题 ID 和变量“NDC”。第三列是我希望根据 NDC 值创建的。

ID     NDC     txtype
1      11111   typeA
1      44444   typeB
2      22222   typeA
2      33333   typeA
2      55555   typeC

【问题讨论】:

我认为我不同意@CalumYou,但您的问题需要更多细节。请通过添加示例数据使此问题可重现。 (我怀疑这可以通过使用查找data.frame 然后使用merge() 来解决,但这还有待观察。) 【参考方案1】:

查看dplyr::case_when。它允许您指定矢量化的if。所以这将是这样的:

library(dplyr)
data %>%
    mutate(
        txtype = case_when(
            NDC %in% c("11111", "22222", "33333") ~ "typeA",
            NDC %in% c("44444", "55555") ~ "typeB"
        )
    )

【讨论】:

以上是关于R:根据OR条件创建具有多个级别的新变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

我可以根据 r 中的其他两个条件创建一个变量的多个类别吗? [复制]

根据给定的系列创建具有 0 和 1 值的新数据框列 [重复]

如何使用具有三个级别的 x 变量和比例不相关的二分 y 变量创建条形图 [重复]

根据 R 中的条件创建重复行

如果 4 个条件中有 2 个为真,则使用 R 创建新变量 [重复]

根据条件从 r 中的多列中删除重复的行