R语言【dplyr】——filter保留符合筛选条件的行,以数据的行为单位,创建子集

Package dplyr version 1.1.4


Parameters

R 复制代码
filter(.data, ..., .by = NULL, .preverse = FALSE)

参数【.data】:一个数据集(data frame),数据集扩展(比如:tibble),或者 lazy data frames(比如:来自 dbplyrdtplyr)。

参数【...】:数据过滤表达式(data-masking expression),返回的是逻辑值,根据参数【.data】中的变量进行定义。如果包含多个表达式,则使用**&运算符合并。++只保留所有条件判断均为 TRUE 的记录++**。

参数【.by】:<tidy-select>可选的,仅用于此操作的列分组选择,可替代 group_by()

参数【.preserve】:与参数【.data】分组时相关。如果 .preserve = FALSE(默认值),分组结构将根据生成的数据重新计算,否则分组结构将保持不变。


Tips

**filter()**函数用于创建参数【.data】的子集行,将参数【...】中的表达式应用于列值,以确定应保留哪些行。它既可应用于分组数据,也可应用于未分组数据。然而,dplyr 还不够智能,无法优化不需要分组计算的分组数据集的过滤操作。因此,过滤未分组数据的速度通常要快得多。


Value

**filter()**函数返回一个与参数【.data】相同类型的对象。输出结果具有以下属性:

  • 行是输入的子集,但以相同的顺序出现。
  • 列未作修改。
  • 组的数量可能会减少(如果参数【.preserve】不是 TRUE)。
  • 数据集属性保留不变。

Available filter

在构建用于过滤数据的表达式时,有许多函数和运算符非常有用:

  • ==,>,>= 等等
  • &,|,!,xor()
  • is.na()
  • between(),near()

Process groups

由于**++过滤表达式是在组内计算的++**,因此在分组的 tibbles 上可能会产生不同的结果。只要涉及聚合、滞后或排序功能,就会出现这种情况。

比较一下未分组的过滤:

R 复制代码
starwars %>% filter(mass > mean(mass, na.rm = TRUE))

再理解一下分组的过滤:

R 复制代码
starwars %>% group_by(gender) %>% filter(mass > mean(mass, na.rm = TRUE))

在未分组版本中,**filter()**将每一行的 mass 值与全局平均值(整个数据集的平均值)进行比较,只保留 mass 大于全局平均值的行。与此相反,分组版本会分别计算每个 gender 组的平均 mass ​​​​​​​,并保留 mass 大于相关性别内平均值的行。

相关推荐
一声沧海笑13 小时前
dplyr、tidyverse和ggplot2初探
信息可视化·数据分析·r语言
waterHBO17 小时前
R语言 基础笔记
开发语言·笔记·r语言
Red Red1 天前
GEO数据库提取疾病样本和正常样本|GEO数据库区分疾病和正常样本|直接用|生物信息|生信
开发语言·数据库·笔记·学习·r语言·c#·生物信息
邢博士谈科教3 天前
比传统机器学习更先进的深度学习神经网络的二分类建模全流程教程
数据挖掘·r语言·数据可视化
环能jvav大师5 天前
基于R语言的统计分析基础:使用键盘输入数据
开发语言·学习·数据分析·r语言·人机交互
Red Red5 天前
GEO数据的下载和处理|GEO数据转换为Gene symbol|GEO注释文件提取symbol|查看样本标签|查看GEO数据疾病或正常|生物信息基础
数据库·笔记·学习·r语言·生物信息·geo数据库
不是伍壹5 天前
【R语言】删除数据框中所有行中没有大于200的数值的行
开发语言·r语言
hongyanwin5 天前
商业预测 初识R
r语言·预测
maizeman1265 天前
R语言统计分析——用回归做ANOVA
回归·r语言·方差分析·anova·线性模型
武艺晴小朋友你好5 天前
基于scRNA-data,运用pySCENIC寻找细胞群里面活跃的调节子
r语言·数据可视化·r语言-4.2.1