我正在使用R.
set.seed(1)
Data <- data.frame(id = seq(1, 10),
Diag1 = sample(c("A123", "B123", "C123"), 10, replace = TRUE),
Diag2 = sample(c("D123", "E123", "F123"), 10, replace = TRUE),
Diag3 = sample(c("G123", "H123", "I123"), 10, replace = TRUE),
Diag4 = sample(c("A123", "B123", "C123"), 10, replace = TRUE),
Diag5 = sample(c("J123", "K123", "L123"), 10, replace = TRUE),
Diag6 = sample(c("M123", "N123", "O123"), 10, replace = TRUE),
Diag7 = sample(c("P123", "Q123", "R123"), 10, replace = TRUE))
Data
Run Code Online (Sandbox Code Playgroud)
我有这样的数据框架.实际上它有34个变量和1.5 Mio观测值.它是一个包含患者数据的数据框.(ID和诊断(ICD10)A123和B123代表某些诊断.我想提取所有患有这些诊断的患者.实际上我正在寻找不同ICD10诊断的100个内的6个诊断.我寻找的每个诊断都可以是出现在任何列中,但它们是相互排斥的.最后,我将有一个大约4000个观测值的数据帧,而不是1.5兆欧.
我的目标是获得一个数据框,我只保留包含A123或B123的行.A123和B123不能在同一行.但它们可以出现在每一栏中.
当我这样做时,我设法为一个变量执行此操作:
DataA123 <- Data[Data$Diag1 == "A123", ]
Run Code Online (Sandbox Code Playgroud)
但我想为每个变量和A123和B123(实际上有6个这样的因素)一起做.
这可能吗?
这个怎么样?
选择A123和/或B123的所有行:
Data[apply(Data,1,function(x) {any(c("A123", "B123") %in% x)}),]
Run Code Online (Sandbox Code Playgroud)
选择A123或B123的所有行:
Data[apply(Data,1,function(x) {Reduce(xor, c("A123", "B123") %in% x)}),]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4882 次 |
| 最近记录: |