>

주어진 유전자와 시료에 대한 값을 포함하는 데이터 프레임을 생성하기 위해 BLAST 출력 데이터베이스를 처리하려고합니다. 샘플 내에서 유전자가 확인되면, 그것이보고 된 스캐 폴드를 원합니다. 주어진 샘플 내에서 주어진 유전자가 확인되지 않으면 세포에 N/A가 채워지기를 원합니다.

sample_name         scaffold    gene_title  match_(%)
P24_ST48                64      aadA12      94.56
401B_ST5223             381     blaTEM-163  99.65
P32_ST218               91      aadA24      90.41
HOS66_ST73              9       blaACT-5    72.31
HOS16_ST38              70      blaTEM-146  99.42
HOS56_ST131             48      aadA21      91.39
Ecoli_2009_1_ST131      41      sul1        99.88
PH152_ST95              37      dfrA33      83.94
Ecoli_2009_32_STNT      16      aac(3)-Ib   100.00
PH231_ST38              59      mph(D)      89.83
P44_STNT                135     blaTEM-105  99.88
Ecoli_2011_89_ST127     29      blaTEM-158  99.65
405C_ST1178             120     aadA1       99.75
P3_STNT                 15      blaTEM-68   99.19
5A_ST34                 174     blaTEM-127  99.88
P27_ST10                211     aph(3')-Ia  100.00
4D_ST767                393     blaTEM-152  98.95
P10_STNT                23      blaTEM-17   99.07
Ecoli_2014_27_ST131     49      sul2_15     99.88
Ecoli_2013_10_ST73      23      blaTEM-2    99.19

출력 테이블은 다음과 같습니다 :

Sample        aadA1    aadA12    aadA24    blaTEM-163 ...
P24_ST48      N/A      64        N/A       N/A
401B_ST5223   N/A      N/A       N/A       381
...

엑셀에서 샘플 이름과 유전자 제목을 연결하고 VLOOKUP을 사용 하여이 문자열이 식별되는 행에 스캐 폴드 번호를보고했습니다 .R에서 여러 가지 다른 방법을 시도했으며 서클에서 돌아 다닙니다.

이제 +700 개의 유전자와 +450 개의 샘플을 처리하려고 시도하면서, 유전자-샘플 조합 목록은 관리하기가 다소 어려워지고 있으며 샘플이 점점 커짐에 따라 다른 솔루션을 찾아야합니다.

도움을 주시면 감사하겠습니다.

환상

최대

  • 답변 # 1

    spread 를 사용하여이를 수행하는 방법은 다음과 같습니다.   tidyr 에서

    library(tidyr)
    df1%>%
      spread(key = gene_title,value = scaffold)
             sample_name match_... aac(3)-Ib aadA1 aadA12 ...
    1        401B_ST5223     99.65        NA    NA     NA
    2        405C_ST1178     99.75        NA   120     NA
    3           4D_ST767     98.95        NA    NA     NA
    4            5A_ST34     99.88        NA    NA     NA
    5 Ecoli_2009_1_ST131     99.88        NA    NA     NA
    ...
    
    

    데이터

    df1 <- read.table(text="sample_name         scaffold    gene_title  match_(%)
    P24_ST48                64      aadA12      94.56
                      401B_ST5223             381     blaTEM-163  99.65
                      P32_ST218               91      aadA24      90.41
                      HOS66_ST73              9       blaACT-5    72.31
                      HOS16_ST38              70      blaTEM-146  99.42
                      HOS56_ST131             48      aadA21      91.39
                      Ecoli_2009_1_ST131      41      sul1        99.88
                      PH152_ST95              37      dfrA33      83.94
                      Ecoli_2009_32_STNT      16      aac(3)-Ib   100.00
                      PH231_ST38              59      mph(D)      89.83
                      P44_STNT                135     blaTEM-105  99.88
                      Ecoli_2011_89_ST127     29      blaTEM-158  99.65
                      405C_ST1178             120     aadA1       99.75
                      P3_STNT                 15      blaTEM-68   99.19
                      5A_ST34                 174     blaTEM-127  99.88
                      P27_ST10                211     aph(3')-Ia  100.00
                      4D_ST767                393     blaTEM-152  98.95
                      P10_STNT                23      blaTEM-17   99.07
                      Ecoli_2014_27_ST131     49      sul2_15     99.88
                      Ecoli_2013_10_ST73      23      blaTEM-2    99.19",
                            header=TRUE,stringsAsFactors=FALSE)
    
    

  • 답변 # 2

    dcast 를 사용할 수 있습니다   data.table 에서

    library(data.table)
    dcast(setDT(df1), sample_name + match_... ~ gene_title, value.var = 'scaffold')
    #      sample_name match_... aac(3)-Ib aadA1 aadA12 ...
    #1:         401B_ST5223     99.65        NA    NA   
    #2:         405C_ST1178     99.75        NA   120   
    #3:            4D_ST767     98.95        NA    NA   
    #4:             5A_ST34     99.88        NA    NA  
    
    

  • 이전 amazon web services - 탄력적 검색에서 다양한 유형의 샤드
  • 다음 java - 모든 짝수 자릿수마다 0을 추가하기 위해 재귀 사용