转置和分组数据 - Linux / R.

时间:2016-05-23 10:34:36

标签: r linux awk

我想转置和分组我的数据:数据形状为:

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 个答案:

答案 0 :(得分:2)

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