查看原文
其他

孙老师作品---数据整合之tidyr包

博文 生信者言 2022-03-29



欢迎加入生信者言讨论群,和我们一起交流,入群请联系微信:genegogo007


在数据整合过程中,有很多优秀的包可供调用,其中tidyr包是大神Hadley Wickham的大作,主要提供了一个类似Excel中数据透视表(pivot table)的功能,使用方便、快捷。可用于处理dataframe格式数据的整合,它的前身是reshape2包,在数据整合过程中常联合dplyr包使用(猛戳看原文)。


数据整合常用包,及其相似函数:


tidyr

gather

spread

reshape(2)

melt

cast

spreadsheets

unpivot

pivot

databases

fold

unfold

 

tidyr处理的dataframe格式数据有以下三个特点:


  1. 每一列表示一个变量

  2. 每一行表示一个样本

  3. 每一个单元格表示观测值 



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包常用的函数:

 

  1. gather       数据融合,宽数据转为长数据

  2. spread      数据重铸,长数据转为宽数据

  3. separate   将一列按分隔符分割为多列

  4. unite         将多列按指定分隔符合并为一列

 

 

1

gather函数

数据融合,数据转为长数据,原理图如下

 

 


数据集table4a有3列,分是country、1999、2000,如下

 

 

我只想融合1999和2000两列,而不融合country,有两种操作方法:


第一种:

table4a_gather<- gather(table4a, key = "key", value = "value",-country)

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 = count)

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<- as.data.frame(table5)

table5_uni<- unite(table5, col = new, century, year, sep = "")

 




/End.







推荐阅读

点击下方图片即可阅读



扫码关注,获取更多精彩内容

喜马拉雅FM搜索并订阅:生信者言;收听内容:

《一分钟听懂NGS基础概念》,让生信分析不再遥不可及

《亲爱的姑娘,你值得被温柔以待》,11个真实的人物故事

《众病之王:癌症传》,一起聆听人类对抗癌症的斗争史

回复文字:果然科学,看一篇好玩的科普文。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存