使用 linux 命令从宽格式转换为长格式
transpose from wide format to long format using a linux command
我希望最好使用 linux 语句或 python 语句将文件从宽格式转换为长格式。
我的输入数据看起来像这样:
head1 M1 M2 M3 M4 M5 M6 M7
abcd A B C D E F G
efgh A B C D E F G
ijkl A B C D E F G
并希望输出是这样的:
abcd A
abcd B
abcd C
abcd E
abcd F
abcd G
efgh A
efgh B
efgh C
...
是否可以这样做,我遇到过 R 代码,但由于文件很大,我宁愿避免使用它?
谢谢
awk 来拯救!
$ awk '{for(i=2;i<=NF;i++) print ,$i}' file
head1 M1
head1 M2
head1 M3
head1 M4
head1 M5
head1 M6
head1 M7
abcd A
abcd B
abcd C
abcd D
abcd E
abcd F
abcd G
efgh A
efgh B
...
如果您想跳过 header
$ awk 'NR>1{for(i=2;i<=NF;i++) print ,$i}' file
我希望最好使用 linux 语句或 python 语句将文件从宽格式转换为长格式。 我的输入数据看起来像这样:
head1 M1 M2 M3 M4 M5 M6 M7
abcd A B C D E F G
efgh A B C D E F G
ijkl A B C D E F G
并希望输出是这样的:
abcd A
abcd B
abcd C
abcd E
abcd F
abcd G
efgh A
efgh B
efgh C
...
是否可以这样做,我遇到过 R 代码,但由于文件很大,我宁愿避免使用它?
谢谢
awk 来拯救!
$ awk '{for(i=2;i<=NF;i++) print ,$i}' file
head1 M1
head1 M2
head1 M3
head1 M4
head1 M5
head1 M6
head1 M7
abcd A
abcd B
abcd C
abcd D
abcd E
abcd F
abcd G
efgh A
efgh B
...
如果您想跳过 header
$ awk 'NR>1{for(i=2;i<=NF;i++) print ,$i}' file