一对多数据的互换
2021-06-07 本文已影响0人
RaoZC
我们的目的是要将以下格式的数据相互转换。
数据转换
转换结果
image.png
得到如下结果:
初步结果
这里我们就得到初步结果,就是GO_ID对应多个Gene_ID。
加标识符
接着我们进行分列:
分列
image.png
image.png
用第三列进行从高到低排序,以第一列作为依据进行去重复,删除冗余列:
image.png
接着按照标识(这里是“#”)进行分列:
最终结果
![](https://img.haomeiwen.com/i15737838/e4cb3651b864c6cf.png)
暂时没有找到一部到位的方法,只能使用较为繁琐的方法进行转换。
1 对数据进行长数据化
library(reshape2)
a = read.table("a.txt", header = T, sep = "\t", quote = "")
b = melt(a, id.vars = "GeneID")
b
![](https://img.haomeiwen.com/i15737838/4178add0d43f23a8.png)
2. 拷贝到excel进行数据透视
如下图,选择数据,选择“插入”选项卡下面的“数据透视图”
![](https://img.haomeiwen.com/i15737838/d99c99084ad2581e.png)
得到如下结果:
![](https://img.haomeiwen.com/i15737838/9501022b71ab1668.png)
这里我们就得到初步结果,就是GO_ID对应多个Gene_ID。
3 分列
将这部分内容拷贝出来(复制-粘贴值),利用标识(Gene_ID中共同的部分,本例中为“Gene”,如果没有标识,则在原始列表中加入),我们可以把"Gene"替换成“$#Gene”,如下:![](https://img.haomeiwen.com/i15737838/7a1fd41dd4b6db2f.png)
接着我们进行分列:
![](https://img.haomeiwen.com/i15737838/38a4e4564a28a6ff.png)
4. 合并
移位后,我们使用公式:=IF(B2="",B2,D1&B2)![](https://img.haomeiwen.com/i15737838/60990a59b2721a43.png)
接着填补空值:如下,选择需要填补的列,接着“开始”→“查找和选择”→“定位条件”→“空值”,先按下“=”,在按住“ctrl”不放,同时按下键盘的方向键“↑”,即可自动填充空值。
![](https://img.haomeiwen.com/i15737838/daa39b1761e6a098.png)
用第三列进行从高到低排序,以第一列作为依据进行去重复,删除冗余列:
![](https://img.haomeiwen.com/i15737838/31b55164d803c520.png)
接着按照标识(这里是“#”)进行分列:
![](https://img.haomeiwen.com/i15737838/6ac4120a3f7da245.png)
暂时没有找到一步到位的方法,继续补充中。