学习笔记(一)tidyverse之dplyr包------数据清洗转换

1、dpylr包概况

dpylr包是tidyverse中的一员,可用于处理R内部或者外部的结构化数据,相较于plyr包,dplyr专注于数据框(dataframe)对象大幅提高了速度,并且提供了更稳健的数据库接口,。同时,dplyr包可用于操作Sparkdataframe

学习资料:tidyverse官方学习文档part5

本文主要记录5个重点函数的学习,分别是

filter()
arrange()
select()
mutate()
summarise()

2、安装

library(dplyr)          # 载入包
data(mtcars)            # 载入数据集

3、筛选 

3.1、filter(.data, ...)

可以按给定的逻辑条件筛选出符合要求的子数据集,第一个参数为数据集,之后的参数为匹配条件

filter(mtcars, cyl == 4)     # 返回cyl=4的观测
filter(mtcars, cyl < 6)      
filter(mtcars, cyl < 6 & vs == 0) #返回cyl<6且vs=0的观测
filter(mtcars, cyl < 6 & !vs == 0) # 返回cyl<6且 vs不为零的观测
filter(mtcars, cyl == 4 | cyl == 8)  # 返回cyl=4和8的观测

逻辑运算符的表示如下

学习笔记(一)tidyverse之dplyr包------数据清洗转换_第1张图片

3.2、slice(.data, ...)

通过行号进行数据选取
slice(mtcars, 1L)    # 返回第一行
filter(mtcars, row_number() == 1)   # 与上一行等价
slice(mtcars, n())   # 返回最后一行
slice(mtcars, 1:5L)  # 返回1到5行
filter(mtcars, between(row_number(), 1, 5))  # 与上一行等价

4、排序

arrange(.data, ...)

对指定的列进行升序排列,用desc()进行降序排列

arrange(mtcars, cyl, disp)  # 用cyl和disp进行联合升序排序
arrange(mtcars, desc(disp)) # 按照进行disp进行降序排序

缺失值会被排序在末尾

5、选择

select(.data, ...)

按列搜索,返回符合条件的所有样本的列

select(mtcars, disp, drat)  # 选取disp和drat列
select(mtcars, hp:am)       # 选取从hp到am的列
select(mtcars, -(hp:am))    # 删除从hp到am的列
select(mtcars, starts_with('dis'))     # 选取以dis开头的变量
select(mtcars, -starts_with('dis'))    # 选取开头不为dis的变量
select(mtcars, ends_with('at'))        # 选取以at结尾的变量
select(mtcars, -ends_with('at'))       # 选取结尾不为at的变量
select(mtcars, contains('s'))          # 选取含有s的变量
select(mtcars, -contains('s'))         # 选取列名中不含有s的变量
select(mtcars, matches('.s.'))         # 选取列名中间含有s的变量
select(mtcars, matches('.s'))          # 选取列名中含有s的变量
select(mtcars, vs, drat, everything()) # 将变量vs、drat放到前面,更改变量顺序
## 重命名
select(mtcars, Disp = disp)            # 将列名disp改为Disp,只返回这一列
rename(mtcars, Disp = disp)            # 将列名disp改为Disp,返回所有列

5、变形

mutate(.data, ...)

对已有数据进行计算整理并添加为新列

mutate(mtcars, disp_1 = disp/100)      # 在列尾增加新列disp_1
mutate(mtcars, disp_1 = sqrt(disp), wt_1 = wt*2, a = disp_1*wt_1)   # 可以用新列进行计算生成新新列
transmute(mtcars, diap_1 = sqrt(disp)) #只保存新列

 运算符号

类型 举例 说明
运算符 +-*/^ ——
整除 %/% 整除、%% 余数 ——
对数

log()、log2()、log10()

——
滞后函数 lag()向前、lead()向后 ——
累计函数

cumsum()累计求和, cumprod()累计内积和, cummin()累计最小值

cummax()累计最大值,summean()累计平均值

——
逻辑运算符 <, <=, >, >=, != ——
排序

min_rank()、row_number(), dense_rank(), percent_rank(), cume_dist(), ntile()

 

6、汇总

summarise(.data, ...)

对数据框调用函数进行汇总操作

summarise(mtcars, mean(disp))         # 返回disp的均值
summarise(mtcars, mean(disp), max(disp)) # 返回disp均值,最大值
summarise(group_by(mtcars, cyl), mean(disp))   # 返回不同cyl水平下的disp均值
mtcars %>%
  group_by(cyl) %>%
  summarise(mean(disp))                        # 运用管道符,简化代码,与上面等价


管道符是个好工具





你可能感兴趣的:(R学习)