首页 > 解决方案 > 使用base R从另一个基于单独列中的值的条件值的表中删除行

问题描述

我有一张桌子:

ID Phenotype 
AA 1
AB 1
AC 0
AD 1
AE 0
AF 1
AG 0

我有一个“1”表型的 ID 列表,我想从其他“1”表型中进行子集化。我想保留所有“0”表型。

说清单上写着:AB,AD

期望的结果是:

        ID Phenotype 
        AA 1
        AB 1
        AC 0
        AD 1
        AE 0
        AG 0

IE AF 将被删除,因为它是表型“1”但不在列表中,并且所有表型“0”都保持不变。

在现实表和列表中,有数千个条目。所有的 ID 都是唯一的。

我在一个与外部工具气锁的 HPC 上工作,因此首选基础 R 解决方案。我可以将表子集为表型 1 和 0,删除我不想要的表型,然后重新加入表,但我想知道是否有一种单一的方法来做到这一点?

非常感谢

标签: rdatatablesubset

解决方案


基本R单线将是:

代码:

df[df[, 1] %in% v | df[, 2] == 0, ]

# checks which data.frame entries are matched in the supplied vector

df[, 1] %in% v 

# checks which second column entries equal 0

df[, 2] == 0

# then we just utilize | to tell R to accept entries that satisfy either of our 
# conditions 

数据:

df <- read.table(text = "ID Phenotype 
AA 1
AB 1
AC 0
AD 1
AE 0
AF 1
AG 0", header = T)

v <- c("AB", "AD")

推荐阅读