【发布时间】:2011-11-03 08:07:33
【问题描述】:
根据多个布尔字段确定因素或创建新类别字段的最佳方法是什么?在这个例子中,我需要计算独特药物组合的数量。
> MultPsychMeds
ID OLANZAPINE HALOPERIDOL QUETIAPINE RISPERIDONE
1 A 1 1 0 0
2 B 1 0 1 0
3 C 1 0 1 0
4 D 1 0 1 0
5 E 1 0 0 1
6 F 1 0 0 1
7 G 1 0 0 1
8 H 1 0 0 1
9 I 0 1 1 0
10 J 0 1 1 0
也许另一种说法是我需要对这些对进行透视或交叉制表。最终结果需要类似于:
Combination Count
OLANZAPINE/HALOPERIDOL 1
OLANZAPINE/QUETIAPINE 3
OLANZAPINE/RISPERIDONE 4
HALOPERIDOL/QUETIAPINE 2
这个数据框可以在 R 中复制:
MultPsychMeds <- structure(list(ID = structure(1:10, .Label = c("A", "B", "C",
"D", "E", "F", "G", "H", "I", "J"), class = "factor"), OLANZAPINE = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L), HALOPERIDOL = c(1L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L), QUETIAPINE = c(0L, 1L, 1L, 1L,
0L, 0L, 0L, 0L, 1L, 1L), RISPERIDONE = c(0L, 0L, 0L, 0L, 1L,
1L, 1L, 1L, 0L, 0L)), .Names = c("ID", "OLANZAPINE", "HALOPERIDOL",
"QUETIAPINE", "RISPERIDONE"), class = "data.frame", row.names = c(NA,
-10L))
【问题讨论】:
-
+1 用于提供数据。但是,我相信您需要更新您的标题,因为似乎没有涉及布尔值(逻辑),也没有进行任何“转换”。您可以将其修改为“计算同时出现的次数”或类似的内容吗?
-
谢谢。修改了标题以匹配实际问题。关于布尔值,原始数据包括 0 代表 FALSE 和 1 代表 TRUE,当从 .csv 文件加载时,R 将这些变量设置为整数。如果先将这些转换为逻辑变量,这个过程会更好吗?
-
我认为对 boolean 的引用很好且直观,据我所知,R 等于 1 和 TRUE 为一且相同(可能存在不正确的情况)。例如,
> 1 == TRUE [1] TRUE
标签: r