r - 如果另一列包含值,则过滤列值
问题描述
本质上,如果另一列包含值,我想过滤一列。这是一个例子:
my_df <- data.frame(x = c(1,1,1,2,2,2),
y = c(1,2,3,4,5,6))
> my_df
x y
1 1 1
2 1 2
3 1 3
4 2 4
5 2 5
6 2 6
让我们过滤x!=1
当且仅当y!=1
。这是我的预期结果:
x y
1 1 1
2 2 4
3 2 5
4 2 6
解决方案
我们可以在group_by
filter
这里使用
library(dplyr)
my_df %>%
group_by(x) %>%
filter(if(any(y == 1)) y == 1 else TRUE)
# A tibble: 4 x 2
# Groups: x [2]
# x y
# <dbl> <dbl>
#1 1 1
#2 2 4
#3 2 5
#4 2 6
或者如果它不需要分组
my_df %>%
filter( (x == 1 & y == 1)|(x !=1))
或与subset
subset(my_df, (x == 1 & y == 1)|(x !=1))
# x y
#1 1 1
#4 2 4
#5 2 5
#6 2 6
或者
subset(my_df, (x == 1 & y == 1)|(x !=1 & y != 1))
推荐阅读
- ios - 为什么本地通知没有触发
- nginx - Nginx - 将域转发到另一个 Nginx 服务器
- javascript - 如何基于 React with SSR (Next.js) 中的媒体查询有条件地呈现?
- python - 三重嵌套列表到python中的字符串列表
- php - 对间接使用 mysqli 和 codeception 的类进行单元测试
- function - 如何从同一类型的构造函数中获取值
- ios - 在 Xcode 13 中的 XCTests 期间设置 XCUIDevice.shared.orientation 以更改方向有什么好的替代方法?
- html - 选中不同的复选框时更改滑块
- pandas - 带 seaborn 的带状图,按行着色
- sql - 更好/更快的方式来进行这些字段计算?