r - 基于多列自动过滤到子集数据
问题描述
这是我试图子集的数据集:
df<-data.frame(
id=c(1:5),
ax1=c(5,3,7,-1,9),
bx1=c(0,1,-1,0,3),
cx1=c(2,1,5,-1,5),
dx1=c(3,7,2,1,8))
数据集有一个在不同时间点测量的变量 x1,用 ax1、bx1、cx1 和 dx1 表示。我试图通过删除任何列(即 ax1、bx1、cx1、dx1)上带有 -1 的行来对这些数据进行子集化。我想知道是否有一种方法可以自动过滤(或过滤功能)来执行此任务。我熟悉重点是基于单个列(或变量)过滤行的情况。
对于当前的情况,我尝试从
mutate_at( vars(ends_with("x1"))
选择所需的列,但我不确定如何将其与过滤器功能结合以产生所需的结果。预期输出将删除第 3 行和第 4 行。我很感激这方面的任何帮助。这里解决了一个类似的案例,但这还没有通过自动化过程完成。我想使自动化适应具有多列的大数据的情况。
解决方案
您可以filter()
使用across()
.
library(dplyr)
df %>%
filter(across(ends_with("x1"), ~ .x != -1))
# id ax1 bx1 cx1 dx1
# 1 1 5 0 2 3
# 2 2 3 1 1 7
# 3 5 9 3 5 8
它相当于filter_at()
with all_vars()
,它已被 取代dplyr 1.0.0
。
df %>%
filter_at(vars(ends_with("x1")), all_vars(. != -1))
推荐阅读
- javascript - JavaScript Three.js / 逻辑——如何在给定时间内仅使用原生 JS 将对象从一个位置补间到另一个位置
- ruby - 在厨师的同一属性文件中使用其他属性中的属性值
- javascript - 如何关闭同级 LI 元素的 UL?
- python - 如何在 KV lang 中从父级设置自定义小部件的文本?
- javascript - Javascript没有循环,因为它应该循环
- javascript - 如何从已解决的获取请求中消费未来?
- php - MYSQL 复制数组值
- r - 在转到 R 中的下一行之前,如何使每一行的函数返回值?
- android - RecyclerView Textwatcher 值不起作用
- python - 使用类实例中的索引引用时调用什么方法?