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 大于相关性别内平均值的行。

相关推荐
让学习成为一种生活方式10 小时前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
有梦想的Frank博士1 天前
R语言*号标识显著性差异判断组间差异是否具有统计意义
开发语言·信息可视化·r语言
逆风远航4 天前
R语言贝叶斯:INLA下的贝叶斯回归、生存分析、随机游走、广义可加模型、极端数据的贝叶斯分析
开发语言·r语言·贝叶斯·生态学·结构方程·环境科学·混合效应
Faxxtty5 天前
【R语言】解决package ‘qvalue’ is not available (for R version 3.6.1)
开发语言·r语言
Cachel wood6 天前
Vue前端框架:Vue前端项目文件目录
java·前端·vue.js·python·算法·r语言·前端框架
邢博士谈科教6 天前
OmicsTools软件和R语言分析环境安装配置答疑汇总最新版
r语言
纪伊路上盛名在6 天前
vscode中提升效率的插件扩展——待更新
linux·服务器·ide·vscode·python·r语言·编辑器
拓端研究室TRL6 天前
银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机森林、贝叶斯等...
python·决策树·机器学习·数据挖掘·r语言
在在进步7 天前
R数据结构&向量基础
数据结构·r语言
琼火hu8 天前
R语言笔记(五):Apply函数
开发语言·笔记·r语言·apply