根据另一个Data.Frame的列值删除Data.Frame的行实例

时间:2017-09-09 17:25:32

标签: r

背景

我在R中有一个包含一系列值的NxM data.frame MATRIX_1。除此之外,我有另一个NxM data.frame MATRIX_2,它包含与第一个的1:1映射,但是它们是布尔值而不是数值,用于判断该数据点是否超出了2个标准差。该特定栏的意思。

目标

我想删除MATRIX_1[row, col]MATRIX_2包含TRUE值的所有行。

实施例

MATRIX_2
AGE   SEX   BMI    BP    S1    S2    S3    S4    S5    S6     Y PROGRESSION
[1,] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE       FALSE

在上方,BMI列的列中包含TRUE值。因此,整个行应从MATRIX_1移除,其中MATRIX_1如下所示:

MATRIX_1
    AGE SEX  BMI     BP  S1    S2   S3   S4     S5  S6   Y PROGRESSION
1    59   2 32.1 101.00 157  93.2 38.0 4.00 4.8598  87 151           1

尝试

我使用%in%运算符看到了以下某些内容,但希望将其自动应用于所有列,而df1[!(df1$name %in% df2$name),]之类的内容则专门针对框架中的单个列。

我使用subset

几乎成功了
subset(diabetes2, boolean_diabetes2[,1] == TRUE)

1 个答案:

答案 0 :(得分:2)

要选择MATRIX_1MATRIX_2中相应行包含所有FALSE值的所有行,您可以执行以下操作:

# sample data    
set.seed(1)
MATRIX_2 <- matrix(sample(c(T,F), 3*4, T, prob = c(.3,.7)), ncol=3)
MATRIX_1 <-  as.data.frame(matrix(runif(3*4), ncol=3))

# subsetting
MATRIX_1[!rowSums(MATRIX_2),]