首页 > 解决方案 > 删除 data.frame 中不包含特定值的列?

问题描述

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

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

此外,手动删除列不是一种选择,因为列的值每天都会通过自动化框架更新。因此,逻辑功能将是完美的。

标签: rrstudio

解决方案


我们可以使用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))

推荐阅读