파일을 하나의 데이터 프레임으로 병합

파일을 하나의 데이터 프레임으로 병합

각각 7개의 열이 있는 거의 160개의 txt 파일이 있는데 이제 이 파일을 하나의 파일에 넣고 싶습니다. 첫 번째와 여섯 번째 열 데이터(Geneid, Length)는 각 파일에서 동일하므로 이를 최종 파일의 첫 번째와 두 번째 열로 만들고 일곱 번째 열 데이터(sample1,sample2,sample3...)를 추출하고 싶습니다. .) 최종 파일에 넣습니다.

예:

샘플 1:

Geneid              Chr     Start   End Strand  Length  Sample1
ENSG00000223972.5   Chr1    34554   12227   ++  1735    0
ENSG00000227232.5   Chr2    14404   1450    ++  1351    12
ENSG00000278267.1   Chr3    17369   17436   ++   68     20
ENSG00000243485.4   Chr4    29554   3003    ++  1021    0
ENSG00000237613.2   Chr5    14404   35174   ++  1219    0

샘플 2:

Geneid              Chr    Start    End Strand  Length  Sample2
ENSG00000223972.5   Chr1    11869   1450    ++  1735    180
ENSG00000227232.5   Chr2    14404   17436   ++  1351    40
ENSG00000278267.1   Chr3    17369   17436   ++   68     9
ENSG00000243485.4   Chr4    14404   3003    ++  1021    49
ENSG00000237613.2   Chr5    17369   3003    ++  1219    3

샘플 3:

Geneid              Chr    Start    End Strand  Length  Sample3
ENSG00000223972.5   Chr1    17369   1450    ++  1735    11
ENSG00000227232.5   Chr2    29554   17436   ++  1351    156
ENSG00000278267.1   Chr3    34554   3003    ++  68      56
ENSG00000243485.4   Chr4    14404   3003    ++  1021    89
ENSG00000237613.2   Chr5    17369   35174   ++  1219    23

최종 출력은 다음과 같아야합니다

Geneid            Length    Sample1 Sample2 Sample3
ENSG00000223972.5   1735    0       180      11
ENSG00000227232.5   1351    12      40      156
ENSG00000278267.1   68      20      9       56
ENSG00000243485.4   1021    0       49      89
ENSG00000237613.2   1219    0       3       23

답변1

(수정된 질문의 경우) awk와 함께 사용하세요 .paste

awk '{printf("%s\t%s", $1, $6); 
    for(i=7;i<=NF;i+=7) printf ("\t%s", $i); printf "\n"}' <(paste files) >final_file

첨부된:printf필드의 실제 값을 기준으로 서식 컨트롤을 변경합니다.

설명하다:

  • {printf ("%s\t%s" ,$1, $6)}1 열과 6 열 먼저 인쇄합니다 .

  • for(i=7;i<=NF;i+=7) printf ("\t%s", $i);그런 다음 나머지 필드를 반복하고 열 7 과 모듈 7이 있는 모든 필드만 인쇄합니다.

  • 먼저 모든 것을 files함께 붙여넣은 다음 에 전달합니다 awk. 즉, 여러 파일 이름을 files제공할 수 있으며 모든 파일은 해당 파일 이름으로 시작하고 그 뒤에 무엇이든 붙입니다.pastemyfiles*myfiles

관련 정보