r - 任何列中存在特定值的子集数据框
问题描述
我有一个(令人尴尬的)简单问题:如何在数据框的任何列中的单个值上过滤或子集数据框:
df <- data.frame(
v1 = c(1:10),
v2 = c(10:1),
v3 = c(1,3,2,9,5,6,1,2,3,9)
)
比如说,我想df
对那些在任何列中包含 value 的行进行子集化9
。我可以这样做:
df[df[,1]==9|df[,2]==9|df[,3]==9,]
v1 v2 v3
2 2 9 3
4 4 7 9
9 9 2 3
10 10 1 9
但是对于这样一个微不足道的任务,一个如此复杂的代码!必须有更有效的方法,无论是在包中base R
还是在其他包中。
解决方案
使用rowSums
:
subset(df, rowSums(df == 9, na.rm = TRUE) > 0)
# v1 v2 v3
#2 2 9 3
#4 4 7 9
#9 9 2 3
#10 10 1 9
推荐阅读
- css - 我需要什么跨浏览器 css 来切换图像/动画徽标
- javascript - Javascript 更改 html 或 body css
- java - 如何将 Spring Data JPA 实体的元数据作为 json 获取?
- java - 如何修复 JButton 不占用整个 JFrame
- python - 没有 ASN.1 编码的 Python 中的数字签名?
- geometry - 半圆/矩形碰撞检测
- ruby-on-rails - RailsAdmin 枚举显示记录的现有值
- javascript - 如何从 LocalStorage 读回数据
- python-3.x - python3.4.2是否有单独的nltk版本可供下载?
- string - 匹配两个熊猫数据框值