dplyr | 数据处理函数的功能速查!dplyr包中的十类操作函数汇总(下篇)
接上篇!
library(dplyr)
6 替换/重编码
替换/重编码操作是对数据框中的部分元素进行改动。
recode
函数用于原子向量中的元素替换
文本型元素的替换:
txt <- c(LETTERS[1:3], 1:2)
txt
## [1] "A" "B" "C" "1" "2"recode(txt, "A" = "Apple", "B" = "Big")
## [1] "Apple" "Big" "C" "1" "2"recode(txt, "1" = "10")
## [1] "A" "B" "C" "10" "2"
数值型元素的替换:
num <- c(1:5)
recode(num, `5` = 50L)
## [1] 1 2 3 4 50
recode_factor
在替换后将原子向量转为因子类型
recode_factor(num, `5` = 50L)
## [1] 1 2 3 4 50
## Levels: 50 1 2 3 4
na_if
函数用于将元素替换成缺失值NA
na_if(x, y)
x:原子向量
y:待替换的元素或向量。
参数y的长度为1时:
x <- c(1:5)
na_if(x, 4)
## [1] 1 2 3 NA 5
参数y的长度与参数x相等时,二者对应位置的元素相等时替换成NA
:
y <- c(5:1)
na_if(x, y)
## [1] 1 2 NA 4 5
coalesce
用于替换缺失值NA
x <- c(1:3, NA, 5:6, NA)
coalesce(x, 4)
## [1] 1 2 3 4 5 6 4
y <- 1:7
coalesce(x, y)
## [1] 1 2 3 4 5 6 7
7 数学运算
R语言中的数学运算函数已由base
和stats
工具包提供,dplyr
中的函数只是对其做了一些补充。
cummean
函数为累平均运算
x <- 1:6
cummean(x)
## [1] 1.0 1.5 2.0 2.5 3.0 3.5
base
包中有cumsum
、cumman
、cummin
等函数。
cumall
函数为all
函数的累加形式
all(x < 5)
## [1] FALSE
cumall(x < 5)
## [1] TRUE TRUE TRUE TRUE FALSE FALSE
cumany
函数为any
函数的累加形式
any(x > 5)
## [1] TRUE
cumany(x >= 5)
## [1] FALSE FALSE FALSE FALSE TRUE TRUE
lag
函数计算数据序列的滞后值
x <- 1:6
lag(x)
## [1] NA 1 2 3 4 5
lag(x, n = 2L)
## [1] NA NA 1 2 3 4
lead函数计算数据序列的前进值
lead(x)
## [1] 2 3 4 5 6 NA
lead(x, n = 2L)
## [1] 3 4 5 6 NA NA
intersect
、union
、setdiff
函数分别用于计算交集、并集、补集
x <- c(1,2,4,6)
y <- c(2:7)
intersect(x, y)
## [1] 2 4 6
union(x, y)
## [1] 1 2 4 6 3 5 7
setdiff(y, x)
## [1] 3 5 7
union_all
函数取交集时不剔除重复值,相当于向量合并
union_all(x, y)
## [1] 1 2 4 6 2 3 4 5 6 7
8 提取
提取操作是根据索引index提取向量中的元素或数据框中的变量。
first
、last
函数分别用于提取第一个和最后一个元素
x <- c(5, 1, 3, 2, 2, NA)
first(x)
last(x)
nth
函数用于提取第n个元素
nth(x, n = 3)
pull
函数用于提取数据框的某个变量
pull(.data, var = -1, name = NULL, ...)
默认提取最后一个变量:
pull(mtcars)
参数var根据变量顺序进行提取,正数表示从前往后,负数表示从后往前:
pull(mtcars, var = 2)
pull(mtcars, var = -2)
参数name根据变量名提取,参数名可省略:
pull(mtcars, name = disp)
pull(mtcars, disp)
9 条件判断
这类函数主要是对逻辑运算的代码进行简化。
between
函数判断数值是否在某闭区间内
between(x, left, right)
between(1:5, 2, 4)
## [1] FALSE TRUE TRUE TRUE FALSE
setequal
函数用于判断数值是否相等
setequal(5, 5)
## [1] TRUE
setequal(pi, 3.14)
## [1] FALSE
near
函数用于判断数值是否近似相等
near(pi, 3.14, tol = 0.01)
## [1] TRUE
near(pi, 3.14, tol = 0.001)
## [1] FALSE
if_else
函数是if-else条件句的简化版,对标于base
包中的ifelse
函数
if_else(1:5 < 3, 0, 1)
## [1] 0 0 1 1 1
case_when
函数是多重if条件句的简化版
该函数越靠前的条件优先级越高,即后续条件不会改变前面条件的结果。
x <- c(1:20)
case_when(x %% 3 == 0 ~ "3的倍数",x %% 2 == 0 ~ "偶数",x %% 2 == 1 ~ "奇数"
)
## [1] "奇数" "偶数" "3的倍数" "偶数" "奇数" "3的倍数" "奇数"
## [8] "偶数" "3的倍数" "偶数" "奇数" "3的倍数" "奇数" "偶数"
## [15] "3的倍数" "偶数" "奇数" "3的倍数" "奇数" "偶数"
10 环境函数
由于在使用管道操作符%>%
编写代码时,中间过程没有新的环境变量生成,因此不能直接对其引用,这时可以使用dplyr
工具包中的环境函数加以指代。
n
:当前分组的样本个数cur_data
:当前数据框,不包含分类(组)变量cur_data_all
:当前数据框,包含分类(组)变量cur_group
:当前分类(组)变量cur_group_id
:当前分组的序号编码cur_group_rows
:当前的行序号cur_column
:当前列名,仅在across
函数内使用
dta <- group_by(mtcars, cyl)
dta %>% summarise(data = list(cur_data()))
## # A tibble: 3 x 2
## cyl data
## * <dbl> <list>
## 1 4 <tibble [11 x 10]>
## 2 6 <tibble [7 x 10]>
## 3 8 <tibble [14 x 10]>
dta %>% mutate(var = list(cur_group()))
## # A tibble: 32 x 12
## # Groups: cyl [3]
## mpg cyl disp hp drat wt qsec vs am gear carb var
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <list>
## 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 <tibble [1~
## 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 <tibble [1~
## 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 <tibble [1~
## 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 <tibble [1~
## 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 <tibble [1~
## 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 <tibble [1~
## 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 <tibble [1~
## 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 <tibble [1~
## 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 <tibble [1~
## 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4 <tibble [1~
## # ... with 22 more rows
dta %>% mutate(var = mpg * cur_group_rows())
## # A tibble: 32 x 12
## # Groups: cyl [3]
## mpg cyl disp hp drat wt qsec vs am gear carb var
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 21
## 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 42
## 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 68.4
## 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 85.6
## 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 93.5
## 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 109.
## 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 100.
## 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 195.
## 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 205.
## 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4 192
## # ... with 22 more rows
往期推荐阅读:
《数据处理通识》专辑-base | 使用apply族函数进行向量化运算
《制表与可视化》专辑-ggplot2 | ggplot2作图语法入门
《数学模型》专辑-car | 线性回归(三)——残差分析和异常点检验
《地理计算与分析》专辑-spdep | 如何在R语言中计算空间自相关指数
dplyr | 数据处理函数的功能速查!dplyr包中的十类操作函数汇总(下篇)相关推荐
- pandas常用函数说明及速查表
pandas常用函数说明及速查表 如果你用python做开发,那么几乎肯定会使用pandas库. Pandas 是 Python 语言的一个扩展程序库,用于数据分析. Pandas 是一个开放源码.B ...
- 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册
<zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...
- Premiere视频特效滤镜功能速查
Premiere视频特效滤镜功能速查<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&q ...
- 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容13]请编写fun()函数,函数的功能是删去一维数组中相同 ...
- C语言试题二十八之编写函数function功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。
1. 题目 编写函数function,该函数的功能是:从字符中删除指定的字符,同一字母的大.小写按不同字符处理. 2 .温馨提示 C试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科 ...
- C语言试题二十五之编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数)。
1. 题目 编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数). 2 .温馨提示 C语言试题汇总里可用于 ...
- C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中
例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...
- 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符
数组:编写一个函数Squeeze(char s[],char c).函数功能:删除字符数组s中出现的与变量c相同的字符. 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符. * ...
- JavaScript中常见的字符串操作函数及用法汇总
转载地址:http://www.jb51.net/article/65358.htm 这篇文章主要介绍了JavaScript中常见的字符串操作函数及用法,实例汇总了javascript常见的字符串转换 ...
最新文章
- 算法时间复杂度和空间复杂度表示
- C语言 数组传递与值传递讲解
- Django从理论到实战(part34)--聚合函数
- 动物克隆技术应用价值_虽然有了克隆技术为什么要进行克隆呢
- kali下sqliv:SQL注入URL扫描器
- scrum流程 规划 冲刺_Scrum –困难的部分2:更快地冲刺
- python也能写emoji表情?两个函数解决两者之间的联系
- oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型
- ListCtrl常用操作
- 中科院计算机学院研究生招生名额,中科院研究生招生
- 数据算法之冒泡排序(bubbleSort)的Java实现
- python购物车代码_python简单商城购物车实例代码
- 位操作实现加减乘除四则运算
- WebRTC源码研究(27)TURN协议
- SAP HANA TRUNCATE清空数据库表
- 【分享】一个查看无线网络密钥的小方法(查看 wife密码,热点密码)
- 无论你处于Java学习的哪个阶段,这些都适合你
- 淘宝api,各种接口
- idea String报错问题
- Gson系列1 --- Gson 序列化与反序列化 -- 数组 / 集合序列化
热门文章
- Tomcat学习总结(19)—— 为什么首选Tomcat作为JavaWeb应用服务器?
- Mysql学习总结(42)——MySql常用脚本大全
- pythonwhile循环怎么修改数据类型_分级程序有while循环问题,使用不同的数据类型...
- pwm波程序如何实现_【优秀成果】如何做好算法与程序实现教学的知识储备
- crash工具解析_crash工具和x86-64汇编基础
- mysql面试题sql语句_数据库MySQL经典面试题之SQL语句
- 如何查找cvpr类的论文_美国凯泽大学工商管理硕士:MBA论文案例编写类如何写?...
- 通讯信息诈骗背后的个人信息安全之痛
- C#编写简易的学生成绩查询
- asp.net core 依赖注入问题