如何在R中用data.table为跨所有STUDY的共享变量创建YES/NO标识
R中使用data.table实现全研究覆盖变量标识的方法
实现逻辑
- 第一步:计算数据集中所有不同研究的总数量
- 第二步:按
VARIABLE字段分组,统计每个变量出现的不同研究数量 - 第三步:将变量对应的研究数量和总研究数对比,相等则FLAG为YES,否则为NO
代码实现
首先加载data.table包:
library(data.table)
读取本地数据可以使用fread,适配大文件读取场景:
# 替换为你的实际数据路径 dt <- fread("your_data_path.csv")
你提供的示例数据构造代码如下:
dt <- data.table( STUDY = c("STUDY1", "STUDY1", "STUDY1", "STUDY2", "STUDY2", "STUDY2", "STUDY3", "STUDY3", "STUDY3"), VARIABLE = c("AGE", "SEX", "WT", "AGE", "RACE", "WT", "AGE", "SEX", "WT") )
核心计算FLAG的代码:
# 计算总研究数 total_study_cnt <- dt[, uniqueN(STUDY)] # 按变量分组生成FLAG dt[, FLAG := fifelse(uniqueN(STUDY) == total_study_cnt, "YES", "NO"), by = VARIABLE]
注:这里使用data.table自带的
fifelse而非基础ifelse,运算效率更高,适配大规模数据的处理需求。
结果说明
执行完上述代码后,dt会自动新增FLAG列,输出结果和你给出的预期完全一致,原有数据的其他字段都会完整保留,无需额外调整。
内容的提问来源于stack exchange,提问作者Amer
相关产品推荐
相关产品推荐

