首页 > 解决方案 > 从 R 中的多个二元变量创建新的条件因子变量

问题描述

我需要创建一个新的 3 级分类变量,以反映受试者是否因过量服用某类药物而死亡。级别类似于:“仅 A 级”、“仅 B 级”、“A 级 + B 级”。

在数据框中,有许多(大约 90 个)不同的单独药物变量,它们是二进制变量 (0/1),表明该药物是否存在于受试者的毒理学中。我需要做的是找到一种方法来创建这个新的因子变量,它会告诉我们是否在那个个体受试者中发现了 A 类药物中的一种,比如 25 种药物,然后为新的因子变量分配一个值“A 类”或“A 类 + B 类”取决于是否还存在 B 类药物。

我不知从何开始。有什么建议么?

标签: r

解决方案


如果没有可重现的示例,我可以向您解释可能有效的步骤。既然您不知从何开始,那么这有望为您提供一个框架,让您了解如何考虑解决此类问题。

1)首先,我们需要知道A类和B类的药物是什么。假设你有这个信息,你可以将这两个类分开成各自的数据框(保持原来的静止)

2)接下来,我们需要知道受试者是否含有药物。我们可以通过在每个数据框上创建一个 TRUE 或 FALSE 的新列来做到这一点。我们将检查的条件是该行的总和是否大于 0。如果为真,则至少一种药物的值必须为 1。例如:

df.class.A$has.drug <- ifelse(rowSums(df.class.A > 0, TRUE, FALSE)

3)我们现在需要通过检查三个条件在原始数据框中创建一列。

df$drugs <- ifelse(df.class.A$has.drug == TRUE, 
                   ifelse(df.class.B$has.drug == TRUE, 'Class A and B', 'Class A'), 
                   ifelse(df.class.B$has.drug == TRUE, 'Class B', 'NONE'))

第一个 ifelse 说“如果我们有 A 类,检查我们是否有 B 类,否则,检查我们是否有 B 类”。

第二个 ifelse 说“我们有 A 类,所以如果我们有 B 类,那就放“A 类和 B 类”,如果我们没有 B 类,那么就放“A 类”。

最后一个说“我们没有 A 类,所以如果我们有 B 类,那么就写“B 类”,如果我们没有 B 类,那么我们什么都没有,所以写“无”(你也可以写 NA或其他任何东西)。


推荐阅读