最初の行に基づいて列をソートする方法は?

最初の行に基づいて列をソートする方法は?

非常に大きなデータセット(1000行と700000列)の列を並べ替える必要があります。たとえば、col1 col4 col3 col2など、ランダムに配置された列があり、それらをソートする必要があります。

私は成功せずにいくつかのコマンドを試しました。

例:

ID M2 M5 M8 M1 M3 M9 .....M7000000
Animal1 1 0 2 1 0 2 .....1
Animal2 0 1 2 0 1 1 .....0
Animal3 2 1 0 1 2 1 .....0
.
.
.
.
Animaln

この例では、ポイントは列と線が多いことを意味します。同様に、次のように列を並べ替える必要があります。

ID M1 M2 M3 M4 M5 M6 .....M7000000
Animal1 1 0 2 1 0 2 .....1
Animal2 0 1 2 0 1 1 .....0
Animal3 2 1 0 1 2 1 .....0
.
.
.
.
Animaln

ありがとう

ベストアンサー1

GNUと共にdatamashそしてGNU sort

datamash transpose -t ' ' -H <file_in.csv | sort -V | datamash transpose -t ' ' -H >file_out.csv

これは「かなり小さい」データに適しています。あなたのファイルにうまくいくかもしれませんし、うまくいかないかもしれません。

編集する:前置きのない次のソリューションは、あまりにも多くのリソースを占有してはいけません。

おすすめ記事