陈明杰
使用reshape2 R包进行在线长数据和宽数据相互转化
2022-12-6 21:29
阅读:2596

封面.gif

数据是数据分析的基础。我们常见的数据一般存储在excel表格,或者txt文档中。今天我们来看看长数据和宽数据,以及如何进行两者之间的相互转换。


1.宽数据和长数据

宽数据

如图1所示,宽数据是我们最常见的数据存储形式,其中行是基因,列是样品,行和列的交叉点,就是某个基因在某个样品中的表达值。宽数据一般至少4列,并且第一列和第一行是唯一的。

fig1.png 

图1. 宽数据示例

长数据

如图2所示,长数据中第一列是基因,第二列是样品,第三列是表达值。这种存储数据的格式带有冗余性,例如基因和样品都有重复。形如一个很窄,很长(高)的长方形。

fig2.png 

图2. 长数据示例

长数据是根据[基因行,样品列]的交叉点坐标取数据,然后按照从上到下,从左到右的顺序把基因、样品、表达值拎出来,重写宽数据。也就是将矩阵形式的数据“扁平化”,两者所描述的内容是一样的。一般来说,宽数据更符合人们的阅读习惯,并且更加紧凑,而长数据则更容易进行数据处理和可视化。

 

2.编程语言中的宽数据和长数据转换

由于不同的软件可能需要不同的数据输入形式,因此,宽数据和长数据的相互转换是日常数据处理必备的技巧。

 

在R语言中

1)reshape2

melt函数将宽数据“熔化”melt成长数据

dcast函数将长数据“铸造”cast成宽数据

2)tidyr

spread函数将宽数据“展开”spread成长数据

gather函数将长数据“聚集”gather成宽数据

 

在python语言中

pandas包的melt函数将宽数据“熔化”成长数据

pandas包的pivot_table函数将长数据“透视汇总”成宽数据表


3. 微生信在线长宽数据相互转换

3.1 打开转换页面

首先,使用浏览器(推荐chrome或者edge)打开长数据-宽数据相互转换页面。

http://www.bioinformatics.com.cn/basic_long_format_data_and_wide_format_data_exchange_by_reshape2_t015

左侧为常见作图导航,中间为数据输入框和可选参数,右侧为描述和结果示例。

fig3.png

图3. 数据转换页面

3.2 示例数据

点击右侧“示例数据”链接下载excel格式的示例数据。这里以宽数据转长数据为例。

fig4.png 

图4. 宽数据示例

宽数据为矩阵形式,行是基因,列是样品。其中第一列为gene_id,其余列为样品。

 

3.3  粘贴宽数据

拷贝示例数据中的宽数据,粘贴到输入框。数据少时直接粘贴,数据较大时,可以上传制表符分割的txt文件。

fig5.png 

图5. 粘贴宽数据

注意:不是拷贝excel文件,是拷贝excel文件里边的数据。另外粘贴到输入框后,格式乱了没关系,只要在excel中是整齐的就行。同时数据矩阵中不能有空的单元格,中文字符等。


3.4  设置参数

由于宽数据转长数据时,需要指定第2列变量和第3列的值名字,因此这里需要我们输入两个名字。

fig6.png 

图6.变量参数


3.5  提交获得结果

粘贴好输入数据,提交后,即可下载转换后的结果。

     fig7.png 

7.结果下载

结果说明

fig8.png 

图8. 长数据结果

 

第一列是基因,第二列是样品,第三列是表达值 

长数据转宽数据类似。

注意:

1,长数据不是宽数据的简单转置,而是根据变量提取数据,所以长数据中的一行至少有3个值,变量1,变量2,变量1 vs 变量2对应的值。作为简单转换页面,默认3列为长数据,超过3列的为宽数据,即仅能转换二维数据。如需更复杂的转换,请使用相应的函数。

2,宽数据转长数据时不会有数据丢失,而长数据转宽数据时,若数据有缺失,则相应宽数据中以NA填补。

 

微生信助力高分文章,用户62000+,引用820+

 

 

 

 


转载本文请联系原作者获取授权,同时请注明本文来自陈明杰科学网博客。

链接地址:https://wap.sciencenet.cn/blog-707141-1366823.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?