在数据整合过程中,有很多优秀的包可供调用,其中tidyr包是大神Hadley Wickham的大作,主要提供了一个类似Excel中数据透视表(pivot table)的功能,使用方便、快捷。可用于处理dataframe格式数据的整合,它的前身是reshape2包,在数据整合过程中常联合dplyr包使用(猛戳看原文)。 数据整合常用包,及其相似函数:
tidyr处理的dataframe格式数据有以下三个特点:
dplyr是发布在github上的开源包,安装方法如下: # Theeasiest way to get tidyr is to install the whole tidyverse: install.packages('tidyverse')
#Alternatively, install just tidyr: install.packages('tidyr')
# Or thethe development version from GitHub: #install.packages('devtools') devtools::install_github('tidyverse/tidyr')
tidyr包常用的函数:
gather函数 数据融合,宽数据转为长数据,原理图如下:
数据集table4a有3列,分别是country、1999、2000,如下图:
我只想融合1999和2000两列,而不融合country,有两种操作方法: 第一种: table4a_gather<- gather(table4a,="" key='key' ,="" value='value'>-> table4a_gather 第二种: table4a_gather<- gather(table4a,="" `1999`,="" `2000`,="" key='year' ,="" value='cases'>-> table4a_gather 2 spread函数 数据重铸,其实就是gather的逆过程,原理图如下:
比如我想把数据集table2得type列重铸:
具体代码如下: table2_split<- spread(table2,="" key="type," value="">-> table2_split 3 separate函数 将一列按分隔符分割为多列,原理图如下:
数据集table3的rate列是由斜杠分割的数据,separate函数可以把rate列分割成两列:
具体代码如下: # into参数指定分隔之后的列名,sep参数指定分隔符 table3_sep<- separate(table3,="" rate,="" into="c('cases','population')," sep='/'>-> table3_sep
4 unite函数 将多列按指定分隔符合并为一列,原理图如下:
比如我想把数据集table5得century和year列合并为一列:
具体代码如下: # col参数指定合并之后的列名称,sep参数指定分隔符 table5<->-> table5_uni<- unite(table5,="" col="new," century,="" year,="" sep=''>->
/End. |
|