dplyr包数据操作高效工具
2022/7/11 来源:不详北京最好手足癣医院 http://m.39.net/news/a_8598844.html
dplyr包:筛选,排序,转换,重命名,因子计算
dplyr包是一个高效数据转换工具.可以通过调用单个函数,实现筛选、排序、重命名等格式上的变换与操作.
dplyr包与baseR对比dataframe是R中一个非常重要的概念,你可以把dataframe看作表格.dplyr的核心代码是用C++编写,运行速度非常快.
下载与安装
install.packages("dplyr")library(dplyr)
代码说明:
install.packages(“”):从cran上下载R包,R包只需下载一次
library():使用R包时,需先载入R包
读入数据
data(mtcars)
代码说明:
自定义数据读取见文末[推荐阅读]
mtcars数据集
数据说明:
mtcars为R内置数据集.数据包括了不同品牌汽车的mpg英里加仑、cyl气瓶数量、disp位移等数据.
排序
1
升序
arrange()按照列,对数据进行升序排序:
mtcars%%arrange(cyl,disp)
代码说明:
arrange(列名1,列名2):以cyl为筛选对象对数据进行排列,然后对相同排名的观测值以disp进行再排序
2
降序
mtcars%%arrange(desc(cyl),desc(disp))
代码说明:
desc():降序排列
筛选
1
条件筛选;行筛选
filter()按条件筛选行,函数的参数是逻辑判断.筛选出满足条件为TRUE的所有行.
使用iris鸢尾花数据集
data(iris)
鸢尾花数据集
iris%%filter(Species=="setosa")
代码说明:
filter():筛选出所有species为setosa类型的行.
注意,因为filter的参数为逻辑判断,因此species为==,而不是单个的=赋值符号
逻辑判断,点击文末[推荐阅读]
iris%%filter(Species=="setosa"Sepal.Length==5)
代码说明:
filter():选出species是setosa并且sepal.length=5的鸢尾花
注意,这里species是factor类型,factor类型的数据能够将数据进行分类,如果原始数据为character类型,无法对数据进行分组.
数据类型,请看文末[推荐阅读]
2
列筛选
select()根据位置、名称、函数等筛选列:
iris%%select(1:3)
代码说明:
选取1~3列
在baseR中可等价写为:
iris[1:3]
根据列名进行筛选:
iris%%select(Species,Sepal.Length)
代码说明:
使用列名对数据集进行筛选
使用baseR可写为:
iris[c("Species","Sepal.Length")]iris%%select(starts_with("Petal"))
代码说明:
选取以Petal开头的列
starts_with(),ends_with(),matches()andcontains()能够匹配带有这些字段的数据
3
按数据类型筛选
Filter(is.factor,iris)代码说明:
Filter():根据数据类型筛选.筛选出iris数据集中数据类型为factor的列
新增列
1
新增列
mutate(mtcars,z=vs+am,z2=z^2)
代码说明:
mutate():创建新列z,z2
改变列顺序
mtcars%%relocate(gear,carb)
代码说明:
relocate():改变数据原有列的位置
最大/小值
根据位置筛选行:
slice(mtcars,25:30)
代码说明
slice():指定所选择的行
1
选择前/后n行观测值
iris%%slice_head(n=3)代码说明:
slice_head()选择前3行观测值
top_n(CO2,3,uptake)
代码说明:
top(data,n,列):以列为筛选条件,筛选排在前n的观测值
slice_tail()
代码说明:
选出数据集最后的行
重命名
iris%%rename(sepal_length=Sepal.Length,sepal_width=2)
代码说明:
rename()对数据进行重命名,参数可以是名称或列的序号.将sepal.length改成sepal_length,并将第2列改名为sepal_width
分组(因子类型)
group_by()能够将数据进行分组.比如一个记录全校成绩的数据集,需要按照年级、班级对数据进行分组,计算每个班的平均分和标准差.这里group_by()中处理的分组数据类型需为factor,经过group_by()计算的数据将按照分组进行计算.
iris%%summarise(x1=mean(Sepal.Width),x2=sd(Sepal.Width))代码说明:
summaries():描述性统计,将结果存储在data.frame中
iris%%group_by(Species)%%summarise(x1=mean(Sepal.Width),x2=sd(Sepal.Width))代码说明:
group_by():将数据分组再对分组的数据进行计算,分组的species可分为三类,根据分组的结果,summarise按行计算结论.
推荐阅读
17_数据导入
11_条件判别筛选(blender特辑)
8_数据类型(春节特辑)
4_快速入门flextable包:替代付费软件!绘制多样化图表
R包分类:生物医学
预览时标签不可点收录于合集#个上一篇下一篇