R语言-数据处理:dplyr包内 mutate-across 联用示例

简介: mutate和across函数是dplyr中非常常用的函数,它们可以帮助我们快速、高效地对数据进行处理和分析。本文分享了联用这两个函数处理数据的基本用法示例,熟练掌握这些函数的用法,可以大大提高我们的数据处理效率。

dplyr 是一个R语言中非常常用的数据处理软件包,它提供了一组简单、一致的函数,用于对数据框进行操作。dplyr的函数通常比R语言中的基本函数更快、更简单,而且更易于使用。其中mutateacross() 配合可用于在dplyr数据处理管道(%>%)中方便地选择多列进行相应的函数处理,从而避免了数据处理过程中管道外使用lapply或循环结构,有效保证代码的整洁统一。

mutate() 的主要功能是创建新列,而且一旦创建就可以立即在管道符使用。
across(.cols = , .fns = )函数常用的只有两个参数,.cols = 和 .fns = 分别指定选取用于遍历的列变量 和 处理函数。

代码示例

1、指定列向量转换 向量类型

df %>% mutate(across(.cols = c(x, y, z), .fns = as.character)) #将x, y, z三列转换为字符型向量
df %>% mutate(across(.cols = 1:3, .fns = as.character) )  #改变1:3列的向量元素类型为字符型
df %>% mutate(across(.cols = everything(), .fns = as.character))   #将所有列转换为字符型向量
str(df) #查看数据框列向量类型

2、将所有字符型的列向量转换为数值型

df %>% mutate(across(where(is.character), as.numeric, .names = '{.col}.2')) ## .names 参数指定新新列名,{.col}代表旧列的列名

3、数据表中单元值的替换

df %>% mutate(across(across(everything(), ~replace(.x, .x ==  "replacement" , "parttern")))

4、使用across()隐函数处理列向量

注: ~是R语言隐函数[lambda]的写法,翻译为代表function(x){...}; 而 .x 或 .则是指向当前被遍历的列向量。

df %>% mutate(across(everything(),~ scale(.),.names = '{.col}.scale')) #对列向量进行中心化

df %>%  drop_na() %>%  mutate( across(where(is.numeric), log) ) #对数化

df %>% mutate(across(c(x,y), ~quantile(.,0.95,na.rm = TRUE), .names = '{.col}_quantitle') )  #计算列向量0.95分位数

df %>% mutate(across(everything(),~ .x / sum(.x, na.rm = TRUE)))  #计算列向量值百分比

5、替换某列小于0的值为NA

df %>%  mutate( across(contains("y"), ~ if_else(.x < 0, NA_real_, .x)) )

Reference

Why I love dplyr's across - Will Hipson
第 40 章 tidyverse中的across()之美1 | 数据科学中的 R 语言 (bookdown.org)

目录
相关文章
|
4月前
|
存储 数据采集 数据处理
R语言数据变换:使用tidyr包进行高效数据整形的探索
【8月更文挑战第29天】`tidyr`包为R语言的数据整形提供了强大的工具。通过`pivot_longer()`、`pivot_wider()`、`separate()`和`unite()`等函数,我们可以轻松地将数据从一种格式转换为另一种格式,以满足不同的分析需求。掌握这些函数的使用,将大大提高我们处理和分析数据的效率。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
58 3
【R语言实战】——fGARCH包在金融时序上的模拟应用
【R语言实战】——fGARCH包在金融时序上的模拟应用
|
7月前
|
存储 算法 Windows
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(下)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
7月前
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
7月前
|
数据挖掘 开发工具 Android开发
R语言对git安卓包分类统计、聚类、复杂网络可视化分析
R语言对git安卓包分类统计、聚类、复杂网络可视化分析
|
7月前
|
存储
【视频】R语言中的分布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
【视频】R语言中的分布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
|
7月前
|
前端开发 数据挖掘 数据建模
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(中)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
7月前
|
编译器 Python Windows
R语言RStan贝叶斯示例:重复试验模型和种群竞争模型Lotka Volterra
R语言RStan贝叶斯示例:重复试验模型和种群竞争模型Lotka Volterra
|
7月前
|
前端开发
R语言实现随机前沿分析SFA、数据包络分析DEA、自由处置包分析FDH和BOOTSTRAP方法
R语言实现随机前沿分析SFA、数据包络分析DEA、自由处置包分析FDH和BOOTSTRAP方法