r - 在数据框中保留具有某些值的行并删除所有其他行 [R]

标签 r rows

我正在使用 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

我有一个这样的数据框。实际上,它有 34 个变量和 1.5 个 Mio 观测值。
它是一个包含患者数据的数据框。 (ID & 诊断 (ICD10) A123 和 B123 代表某些诊断。我想提取所有具有这些诊断的患者。事实上,我正在寻找不同 ICD10 诊断的 100 秒内的 6 个诊断。我寻找的每一个诊断都可以是出现在任何列中,但它们是相互排斥的。最后我会有一个大约 4000 个观测值的数据框,而不是 1.5 Mio。

我的目标是获得一个数据框,我只保留包含 A123 或 B123 的行。
A123 和 B123 不能在同一行。但它们可以出现在每一列中。

当我这样做时,我设法为一个变量做到这一点:
DataA123 <- Data[Data$Diag1 == "A123", ]

但我想对每个变量以及 A123 和 B123(实际上有 6 个这样的因素)一起做。

这可能吗?

最佳答案

这个怎么样?

选择所有带有 A123 和/或 B123 的行:

Data[apply(Data,1,function(x) {any(c("A123", "B123") %in% x)}),]

选择所有带有 A123 或 B123 的行:
Data[apply(Data,1,function(x) {Reduce(xor, c("A123", "B123") %in% x)}),]

关于r - 在数据框中保留具有某些值的行并删除所有其他行 [R],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18804745/

相关文章:

r - 按因子对数据框列进行排序

r - 基于另一个数据集复制粘贴行

python - 将数据框划分为包含所有列的行列表

python - 数组中值比较的Pythonic方法?

mysql - 如何SQL查询最后插入的行组

r - 如何在 Julia 中对矩阵进行排序

r - 如何从 shapefile 传单 R 访问多边形信息

performance - 计算2 * 2矩阵秩的最快方法?

php - mysql合并来自不同行的三个不同值

r - 如何从包含n * NA的数据框中删除行