2016-05-23 19 views
1

我要转和组我的数据:数据形状:移调和组数据 - 的Linux/R

APOC2 GO:0006629 
APOC2 GO:0006869 
APOC2 GO:0008047 
APOC2 GO:0042627 
APOC2 GO:0043085 
CRYAB GO:0005212 
SERPINA1 GO:0005615 
DMD GO:0001954 
DMD GO:0002162 
DMD GO:0003779 
DMD GO:0005200 
DMD GO:0005886 

但我需要在这个简单的制表符分隔格式的数据(即$ 1的记录分组以使其出现一次,并且其所有GO值(其存在于输入文件的$ 2中)应当出现在同一行的前面)。像输出上面记载是:

APOC2 GO:0006629 GO:0006869 GO:0008047 GO:0042627 GO:0043085 
CRYAB GO:0005212 
SERPINA1 GO:0005615 
DMD GO:0001954 GO:0002162 GO:0003779 GO:0005200 GO:0005886 

解决方法就是在questions/17853218在这个论坛上给定的,但我的数据文件较大,使得MS Excel不能处理它。我如何在Linux或R程序中执行相同的任务。 谢谢。

+1

[在数据帧由组收起文本]的可能的复制(http://stackoverflow.com/questions/22756372/collapse-text-by-group-in-data-frame) – jogo

回答

2
awk '$1 == key { data = data "\t" $2; next; } { print key "\t" data; key = $1; data = $2; } END { print key "\t" data }' awkdata.txt 
+0

由于'迈克尔Vehrs '脚本工作,并产生所需的输出,但这是一个小问题:我的数据文件$ 1包含'1352'唯一值,我通过'sort | uniq | wc -l',但是你提出的脚本是创建'3679'行,这意味着$ 1中的一些值被分组了多次。 –

+0

那么,你的问题不包括值必须是唯一的要求。 –