我在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)
答案 0 :(得分:2)
要选择MATRIX_1
中MATRIX_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),]