美文网首页
使用reshape2 R包进行在线长数据和宽数据相互转化

使用reshape2 R包进行在线长数据和宽数据相互转化

作者: 微生信 | 来源:发表于2022-12-05 22:08 被阅读0次

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


    1.宽数据和长数据


    宽数据

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

    图1. 宽数据示例


    长数据

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

    图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

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

    图3. 数据转换页面


    3.2 示例数据

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

    图4. 宽数据示例


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


    3.3 粘贴宽数据

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

    图5. 粘贴宽数据


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

    3.4 设置参数

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


    图6.变量参数

    3.5 提交获得结果

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


    图7.结果下载


    结果说明

    图8. 长数据结果

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


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


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




    相关文章

      网友评论

          本文标题:使用reshape2 R包进行在线长数据和宽数据相互转化

          本文链接:https://www.haomeiwen.com/subject/mvnifdtx.html