r - 删除 data.frame 中不包含特定值的列?
问题描述
我有一个包含 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))
推荐阅读
- docker-compose - Docker 在 Github Actions 中撰写端口映射
- python - Django:使用 GET 而不是 PATCH 更新特定字段
- c++ - 为什么屏幕缓冲区中出现额外的字母
- flutter - 如何在颤动中自动启动某些东西
- c# - 如何将 csc 升级到最新的 roslyn 工具
- c++ - collect2.exe:错误:ld 返回 1 退出状态窗口 7 SE
- tensorflow - MNIST 分类器在非 MNIST 数字上失败
- r - 将动态 UI 保存到全局 R 工作区
- c++ - 使用模板分配器和对对向量进行排序的函数
- ssl - nginx 多个 proxy_pass 使用不同的 ssl 证书和子域到同一个域