删除 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))
我有一个包含 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))