首页 > 解决方案 > 如何在数据集中为跨 STUDY 的共享变量在数据集中创建 Y/N 标志

问题描述

我想在数据集中创建一个 YES/NO 标志,这样如果VARIABLE列中的变量出现在每个STUDYYES 中,否则 NO。因此,例如,当所有研究中都存在 AGE 时,该标志应为“是”,否则为“否”。

这里有一个简单的示例,但我的数据要大得多,并且还有其他列:

STUDY     VARIABLE
STUDY1      AGE
STUDY1      SEX
STUDY1       WT
STUDY2      AGE
STUDY2      RACE
STUDY2       WT
STUDY3      AGE
STUDY3      SEX
STUDY3       WT

输出应该是:

STUDY     VARIABLE  FLAG
STUDY1      AGE      YES
STUDY1      SEX      NO 
STUDY1       WT      YES
STUDY2      AGE      YES
STUDY2      RACE     NO
STUDY2       WT      YES
STUDY3      AGE      YES
STUDY3      SEX      NO
STUDY3       WT      YES

我如何在 R 中使用 `data.table' 做到这一点?

标签: rdata.table

解决方案


你可以试试

df[, n := (.N == 3), by = VARIABLE][, FLAG := c("YES", "NO")[match(FLAG, c(TRUE, FALSE))]]

    STUDY VARIABLE FLAG
1: STUDY1      AGE  YES
2: STUDY1      SEX   NO
3: STUDY1       WT  YES
4: STUDY2      AGE  YES
5: STUDY2     RACE   NO
6: STUDY2       WT  YES
7: STUDY3      AGE  YES
8: STUDY3      SEX   NO
9: STUDY3       WT  YES

如果您需要通用方式,请告诉我(具体情况将不胜感激)。

df[, FLAG := (.N == df[,uniqueN(n = uniqueN(STUDY), STUDY)]), by = VARIABLE][, FLAG := c("YES", "NO")[match(FLAG, c(TRUE, FALSE))]]

推荐阅读