在往期跟大家分享的推文总结 | 数据整理、分析和可视化步骤中一些重要的R包中,我们给大家介绍了一个数据处理的包:dplyr。 dplyr包可以处理R内部或者外部的结构化数据,帮助您解决大部分的数据处理问题。此包函数多,功能强大。我将会从以下这几个方面来跟大家一起学习。
0. 初始化
1. 基本语法
2. 分组动作 group_by()
3. 连接符 %.%
4. 数据关联:join
5. 数据合并: bind
6. 集合操作: set
本篇推文主要是跟大家先学习基本语法,后面的内容将放到下一篇推文。
使用dplyr包处理数据前,建议先将数据集转换为tbl对象。tbl_df()可用于将过长过大的数据集转换为显示更友好的 tbl_df 类型。
0初始化
0.1 安装加载包
install.packages("dplyr")
library(dplyr)
0.2 数据类型转换
class(mtcars)
转换为tbl_df类型
ds <- tbl_df(mtcars)
查看转换后的数据类型
class(ds)
1.基本语法
1.1 mutate():对已有列进行数据运算并添加为新列:
mutate(mtcars, wt_a = wt * 45, wt_b = wt_kg / 10)#添加新列wt_a ,wt_b,返回对象中只包含新列
transmute(mtcars, wt_kg = wt * 45, wt_t = wt_kg / 10)#计算新列wt_kg和wt_t,返回对象中只包含新列
1.2 select():选择变量
1.2.1 根据列号选择变量
select(mtcars,1)#选第一列
select(mtcars,c(1:3))#选第1-3列
select(mtcars,c(1,6))#选第1列和第6列
1.2.2 根据变量名选择变量
#例子1
select(mtcars, mpg, disp)#选择名为mpg, disp的列
#例子2
vars <- c("mpg", "disp","wt")
select(mtcars, one_of(vars))
1.3 filter():可以按给定的逻辑条件筛选出符合要求的子数据集
filter(mtcars, cyl == 4)#过滤出cyl == 4的行
filter(mtcars, cyl < 6 & vs == 1)#过滤出cyl < 6 并且 vs == 1的行
filter(mtcars, cyl < 6 | vs == 1)#过滤出cyl < 6 或者 vs == 1的行
filter(mtcars, cyl %in% c(4, 6))#过滤出cyl 为4或6的行
1.4 slice():按照行数选子集
slice(mtcars,1)#选出第一行
slice(mtcars,3:5)#选出第3-5行
1.5 arrange():按某1列或某几列对整个表格进行排序
arrange(mtcars, mpg)#默认从小到大排序
arrange(mtcars, desc(mpg))#从大到小排序
arrange(mtcars, cyl, desc(mpg))#cyl从小到大排序,mpg从大到小排序
1.6 relocate():改变变量的位置
mtcars %>% relocate(mpg,.after =cyl)# 把变量mpg放到变量cyl后面
mtcars %>% relocate(mpg, .before = hp)# 把变量mpg放到变量hp的前面
mtcars %>% relocate(mpg, .after = last_col())#把变量mpg放到最后一列
1.7 summarise():对数据框调用函数进行汇总操作
summarise(mtcars, mean(mpg), sd(mpg))# 计算mpg的平均值和标准差
summarise(group_by(mtcars, cyl),mean(mpg), sd(mpg))#先按照cyl分组,计算每组mpg的平均值和标准差
1.8 去重: distinct()用于对输入的tbl进行去重,返回无重复的行,类似于 base::unique() 函数,原数据集行名称会被过滤掉。
df <- data.frame(
x = rep(c(10:0), 2),
y = rep(c(20:30),2)
)#生成带有重复行的数据集
nrow(distinct(df))#以全部两个变量去重,返回去重后的行数
nrow(distinct(df, x, y))#以全部两个变量去重,返回去重后的行数
distinct(df, x)#以变量x去重,只返回去重后的x值
distinct(df, y)#以变量y去重,只返回去重后的y值
distinct(df, x, .keep_all = TRUE)#以变量x去重,返回所有变量
distinct(df, y, .keep_all = TRUE)#以变量y去重,返回所有变量
distinct(df, diff = abs(x - y))#对变量运算后的结果去重
1.9 sample():抽样函数
1.9.1 sample_n()随机抽取指定数目的样本
sample_n(mtcars, 8)#随机无重复的取8行数据,不放回抽样
sample_n(mtcars, 50, replace = TRUE)#随机有重复的取50行数据,replacement = TRUE为放回抽样
sample_n(mtcars, 10, weight = mpg)#随机无重复的以mpg值做权重取10行数据
1.9.2 sample_frac()随机抽取指定百分比的样本
sample_frac(mtcars, 0.2)#随机无重复的取20%的数据
sample_frac(mtcars,2, replace = TRUE)#随机有重复的取总行数2倍的数据
sample_frac(mtcars, 0.1, weight = 1 / mpg)#随机无重复的以1/mpg值做权重取10%的数据
关于dplyr 包的 基本语法 介绍到这,下篇推文呢跟大家一起学习:分组动作 group_by(),连接符 %.%,数据关联:join,数据合并: bind,集合操作: set ,条件语句:ifelse。
欢迎大家关注我们的微信公众号!
R语言与SPSS学习笔记