r - 从 R 中的多个二元变量创建新的条件因子变量
问题描述
我需要创建一个新的 3 级分类变量,以反映受试者是否因过量服用某类药物而死亡。级别类似于:“仅 A 级”、“仅 B 级”、“A 级 + B 级”。
在数据框中,有许多(大约 90 个)不同的单独药物变量,它们是二进制变量 (0/1),表明该药物是否存在于受试者的毒理学中。我需要做的是找到一种方法来创建这个新的因子变量,它会告诉我们是否在那个个体受试者中发现了 A 类药物中的一种,比如 25 种药物,然后为新的因子变量分配一个值“A 类”或“A 类 + B 类”取决于是否还存在 B 类药物。
我不知从何开始。有什么建议么?
解决方案
如果没有可重现的示例,我可以向您解释可能有效的步骤。既然您不知从何开始,那么这有望为您提供一个框架,让您了解如何考虑解决此类问题。
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或其他任何东西)。
推荐阅读
- excel - 升级到 Office 2013 后如何在任务计划程序中使用 Excel VBA 发送 Outlook 项目?
- docker - 父 docker 容器不会停止,我需要访问终端并运行我的命令
- python - 有限浮点小数点不四舍五入
- sql - 修剪,左,右,中?
- google-bigquery - 如果查询多个表,如何优化 bigquery?
- python - 将上下文向下传递函数的干净方法是什么?
- phpunit - 为 phpUnit 7(远程)覆盖配置 phpStorm 和 XML
- c# - 如何从 Facebook 注销并切换用户?
- division - Maple中的除法算法
- java-8 - 从地图获取值时使用 Optional 验证 null