크기가 약 1.3GB이고 300개의 열과 1백만 개가 넘는 행이 있는 gene.csv 파일이 있습니다. 아래처럼 보인다
id1 id2 id3 id4 count1 count2
S1001 450 GAF ARHGAP18 1.56E-05 1483
S1001 450 GAF ARHGAP12 5E-05 3698
S1001 450 GAF ARHGAP15 2.75E-06 93
S1001 450 GAF ARHGAP17 3E-05 1889
S1001 450 GAF ARHGAP19 4.291E-06 596
S1002 450 GAF ARHGAP18 5.955E-05 5353
S1002 450 GAF ARHGAP12 8.578E-08 14
S1002 450 BAF ARHGAP15 2.91E-05 5381
S1002 450 BAF ARHGAP17 1.78E-06 105
S1002 450 BAF ARHGAP19 3.62E-05 5764
S1003 450 BAF ARHGAP18 5.2697E-06 330
S1003 450 BAF ARHGAP12 5.955E-05 2263
S1003 450 BAF ARHGAP15 8.578E-08 3147
S1003 450 CAF ARHGAP17 2.91E-05 50
S1003 450 CAF ARHGAP19 5.955E-05 1595
S1004 450 CAF ARHGAP18 8.578E-08 970
S1004 450 CAF ARHGAP12 2.91E-05 816
S1004 450 CAF ARHGAP15 5.955E-05 4981
S1004 450 CAF ARHGAP17 8.578E-08 816
S1004 450 CAF ARHGAP19 2.91E-05 4981
다음 형식으로 id1, id4 및 count2 데이터(행렬)를 가져오고 싶습니다.
id4 S1001 S1002 S1003 S1004
ARHGAP18 1483 5353 330 970
ARHGAP12 3698 14 2263 816
ARHGAP15 93 5381 3147 4981
ARHGAP17 1889 105 50 816
ARHGAP19 596 5764 1595 4981
새 파일의 열 이름으로 한 번만 반복하면 됩니다(id1은 모든 유전자의 모든 행에서 반복되기 때문입니다). 간단한 bash 명령(유전자 이름(행) 및 샘플 ID(열)의 매트릭스)에서 이 정보를 어떻게 얻을 수 있습니까?
답변1
Miller와 함께 사용모양 변경
mlr --tsv cut -o -f id4,id1,count2 then reshape -s id1,count2 input.tsv
당신은 할 것
id4 S1001 S1002 S1003 S1004
ARHGAP18 1483 5353 330 970
ARHGAP12 3698 14 2263 816
ARHGAP15 93 5381 3147 4981
ARHGAP17 1889 105 50 816
ARHGAP19 596 5764 1595 4981
TSV 파일을 입력 및 출력으로 설정했습니다. 텍스트 파일이 탭으로 구분되어 있습니까?
일부 의견:
--tsv
입력 및 출력 형식을 설정하는 것입니다.cut
id4, id1 및 count2만 추출합니다.reshape
구조를 수정하는 것입니다.
답변2
당신이 요청한교차표(또는 피벗 테이블). 이것을 사용하여 달성할 수 있습니다.GNU 데이터 혼합
datamash --header-in --whitespace crosstab id4,id1 unique count2 < file
S1001 S1002 S1003 S1004
ARHGAP12 3698 14 2263 816
ARHGAP15 93 5381 3147 4981
ARHGAP17 1889 105 50 816
ARHGAP18 1483 5353 330 970
ARHGAP19 596 5764 1595 4981
--whitespace
(데이터가 탭으로 구분된 경우 건너뛸 수 있습니다.)
그러나 작업에 더 적합한 전용 생물정보학 도구가 있을 수 있습니다.