두 개의 파일을 병합하고 새 파일을 만듭니다. 파일 1의 열 수가 100을 초과하고 파일 2의 열 수가 2를 초과합니다.

두 개의 파일을 병합하고 새 파일을 만듭니다. 파일 1의 열 수가 100을 초과하고 파일 2의 열 수가 2를 초과합니다.

두 개의 .csv 파일이 있고 File1.csv에는 ~100개의 열과 60,000개의 행이 있고 File2.csv에는 2개의 열과 57,000개의 행이 있습니다. 두 파일 모두 공통 열(gene_symbol)을 가지고 있습니다. file1.csv와 file2.csv의 gene_symbol이 일치하면 새 파일을 만들고 싶고 file1.csv의 헤더를 포함하여 모든 줄을 새 파일로 가져와야 합니다.

파일 1.csv

gene_symbol TCGA-HZ-A4BH-01A-11R-A26U-07    TCGA-IB-8127-01A-11R-2404-07
ENSG00000000003 2212    5047
ENSG00000000005 39  2
ENSG00000000419 1571    3337
ENSG00000000457 1046    1832
ENSG00000000460 441 512
ENSG00000000938 1059    1935
ENSG00000000971 4628    8834
ENSG00000001036 2388    3976
ENSG00000001084 1385    3352
ENSG00000001167 1395    4373
ENSG00000001460 484 913
ENSG00000001461 1741    4199

파일 2.csv

gene_symbol entrezgene
ENSG00000000003 7105
ENSG00000000005 64102
ENSG00000000419 8813
ENSG00000000457 57147
ENSG00000000460 55732
ENSG00000000938 2268
ENSG00000000971 3075
ENSG00000001036 2519
ENSG00000001084 2729
ENSG00000001167 4800
ENSG00000001460 90529
ENSG00000001461 57185

다음 출력을 찾고 있습니다.

파일 3.csv

gene_symbol entrezgene  TCGA-HZ-A4BH-01A-11R-A26U-07    TCGA-IB-8127-01A-11R-2404-07    TCGA-F2-7273-01A-11R-2156-07
ENSG00000000003 7105    2212    5047    3078
ENSG00000000005 64102   39  2   3
ENSG00000000419 8813    1571    3337    1876
ENSG00000000457 57147   1046    1832    1495
ENSG00000000460 55732   441 512 294
ENSG00000000938 2268    1059    1935    3323
ENSG00000000971 3075    4628    8834    23071
ENSG00000001036 2519    2388    3976    3715
ENSG00000001084 2729    1385    3352    3529
ENSG00000001167 4800    1395    4373    2996
ENSG00000001460 90529   484 913 772
ENSG00000001461 57185   1741    4199    4016

답변1

나는 GNU Coreutils가 join당신의 명령이라고 생각합니다:

join file2.csv file1.csv > file3.csv

CSV 파일이 탭으로 구분되지 않고 쉼표로 구분된 경우 다음을 사용하세요.

join -t, file2.csv file1.csv > file3.csv

답변2

이 시도,

join <(sort -r file2.csv) <(sort -r file1.csv)  > file3.csv

관련 정보