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