数据是数据分析的基础。我们常见的数据一般存储在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)打开长数据-宽数据相互转换页面。
微生信-在线长数据、宽数据表格相互转换
左侧为常见作图导航,中间为数据输入框和可选参数,右侧为描述和结果示例。
图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+