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语言中的数学运算函数已由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              
## *              
## 1     4 
## 2     6  
## 3     8 
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        
##                    
##  1  21       6  160    110  3.9   2.62  16.5     0     1     4     4 
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
##               
##  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张图片

你可能感兴趣的:(js,python,数据挖掘,javascript,html)