一对多数据的互换

我们的目的是要将以下格式的数据相互转换。
数据转换

暂时没有找到一部到位的方法,只能使用较为繁琐的方法进行转换。

1 对数据进行长数据化

library(reshape2)
a = read.table("a.txt", header = T, sep = "\t", quote = "")
b = melt(a, id.vars = "GeneID")
b
转换结果

2. 拷贝到excel进行数据透视

如下图,选择数据,选择“插入”选项卡下面的“数据透视图”


image.png

得到如下结果:
初步结果

这里我们就得到初步结果,就是GO_ID对应多个Gene_ID。

3 分列

将这部分内容拷贝出来(复制-粘贴值),利用标识(Gene_ID中共同的部分,本例中为“Gene”,如果没有标识,则在原始列表中加入),我们可以把"Gene"替换成“$#Gene”,如下:
加标识符

接着我们进行分列:
分列

4. 合并

移位后,我们使用公式:=IF(B2="",B2,D1&B2)
image.png

接着填补空值:如下,选择需要填补的列,接着“开始”→“查找和选择”→“定位条件”→“空值”,先按下“=”,在按住“ctrl”不放,同时按下键盘的方向键“↑”,即可自动填充空值。


image.png

用第三列进行从高到低排序,以第一列作为依据进行去重复,删除冗余列:
image.png

接着按照标识(这里是“#”)进行分列:
最终结果

暂时没有找到一步到位的方法,继续补充中。

你可能感兴趣的:(一对多数据的互换)