행 및 열 데이터 매트릭스로 파일 가져오기

행 및 열 데이터 매트릭스로 파일 가져오기

크기가 약 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입력 및 출력 형식을 설정하는 것입니다.
  • cutid4, 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(데이터가 탭으로 구분된 경우 건너뛸 수 있습니다.)

그러나 작업에 더 적합한 전용 생물정보학 도구가 있을 수 있습니다.

관련 정보