删除 data.frame 中不包含特定值的列?

Drop columns in a data.frame that do not contain a specific value?

我有一个包含 5 列的 data.frame,其中 4 列包含从 0 到 99 的值,只有 1 列包含从 0 到 100 的值。基本上我想创建一个逻辑函数来删除任何 4列不包含值 100。

所以假设我们应该删除 column1、column2、column3 和 column5,因为 column4 是唯一包含值 100 的列。

此外,手动删除列不是一种选择,因为列的值每天通过自动化框架更新。所以一个逻辑函数就完美了。

我们可以使用 colSums :

df[, colSums(df == 100, na.rm = TRUE) > 0]

#    b   d
#1  10 100
#2  12  98
#3 100 100
#4   1   1

dplyr :

library(dplyr)
df %>% select_if(~any(. == 100, na.rm = TRUE))

数据

df <- data.frame(a = c(89, 23, 25, 21),b = c(10, 12, 100, 1), 
                 c = c(10, 1, 3, 6), d = c(100, 98, 100, 1))