接上篇!

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语言中的数学运算函数已由basestats工具包提供,dplyr中的函数只是对其做了一些补充。

  • cummean函数为累平均运算

x <- 1:6
cummean(x)
## [1] 1.0 1.5 2.0 2.5 3.0 3.5
  • base包中有cumsumcummancummin等函数。

  • 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
  • intersectunionsetdiff函数分别用于计算交集、并集、补集

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提取向量中的元素或数据框中的变量。

  • firstlast函数分别用于提取第一个和最后一个元素

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包中的十类操作函数汇总(下篇)相关推荐

  1. pandas常用函数说明及速查表

    pandas常用函数说明及速查表 如果你用python做开发,那么几乎肯定会使用pandas库. Pandas 是 Python 语言的一个扩展程序库,用于数据分析. Pandas 是一个开放源码.B ...

  2. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

  3. Premiere视频特效滤镜功能速查

    Premiere视频特效滤镜功能速查<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&q ...

  4. 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容13]请编写fun()函数,函数的功能是删去一维数组中相同 ...

  5. C语言试题二十八之编写函数function功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。

    1. 题目 编写函数function,该函数的功能是:从字符中删除指定的字符,同一字母的大.小写按不同字符处理. 2 .温馨提示 C试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科 ...

  6. C语言试题二十五之编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数)。

    1. 题目 编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数). 2 .温馨提示 C语言试题汇总里可用于 ...

  7. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中

    例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...

  8. 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符

    数组:编写一个函数Squeeze(char s[],char c).函数功能:删除字符数组s中出现的与变量c相同的字符. 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符. * ...

  9. JavaScript中常见的字符串操作函数及用法汇总

    转载地址:http://www.jb51.net/article/65358.htm 这篇文章主要介绍了JavaScript中常见的字符串操作函数及用法,实例汇总了javascript常见的字符串转换 ...

最新文章

  1. 算法时间复杂度和空间复杂度表示
  2. C语言 数组传递与值传递讲解
  3. Django从理论到实战(part34)--聚合函数
  4. 动物克隆技术应用价值_虽然有了克隆技术为什么要进行克隆呢
  5. kali下sqliv:SQL注入URL扫描器
  6. scrum流程 规划 冲刺_Scrum –困难的部分2:更快地冲刺
  7. python也能写emoji表情?两个函数解决两者之间的联系
  8. oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型
  9. ListCtrl常用操作
  10. 中科院计算机学院研究生招生名额,中科院研究生招生
  11. 数据算法之冒泡排序(bubbleSort)的Java实现
  12. python购物车代码_python简单商城购物车实例代码
  13. 位操作实现加减乘除四则运算
  14. WebRTC源码研究(27)TURN协议
  15. SAP HANA TRUNCATE清空数据库表
  16. 【分享】一个查看无线网络密钥的小方法(查看 wife密码,热点密码)
  17. 无论你处于Java学习的哪个阶段,这些都适合你
  18. 淘宝api,各种接口
  19. idea String报错问题
  20. Gson系列1 --- Gson 序列化与反序列化 -- 数组 / 集合序列化

热门文章

  1. Tomcat学习总结(19)—— 为什么首选Tomcat作为JavaWeb应用服务器?
  2. Mysql学习总结(42)——MySql常用脚本大全
  3. pythonwhile循环怎么修改数据类型_分级程序有while循环问题,使用不同的数据类型...
  4. pwm波程序如何实现_【优秀成果】如何做好算法与程序实现教学的知识储备
  5. crash工具解析_crash工具和x86-64汇编基础
  6. mysql面试题sql语句_数据库MySQL经典面试题之SQL语句
  7. 如何查找cvpr类的论文_美国凯泽大学工商管理硕士:MBA论文案例编写类如何写?...
  8. 通讯信息诈骗背后的个人信息安全之痛
  9. C#编写简易的学生成绩查询
  10. asp.net core 依赖注入问题