R 数据操纵的挑战

R 数据操纵的挑战,r,R,我试图处理BLAST输出的数据库,以生成包含给定基因和给定样本值的数据帧。当一个基因在样本中被鉴定时,我希望它被鉴定的支架被报告。如果一个给定的基因在一个给定的样本中没有被识别,我希望细胞中充满N/a sample_name scaffold gene_title match_(%) P24_ST48 64 aadA12 94.56 401B_ST5223 381 blaTEM-163 9

我试图处理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
...
在excel中,我连接了样本名称和基因标题,并报告了使用VLOOKUP识别该字符串的行上的支架编号-我在R中尝试了许多不同的方法,并且正在循环

现在正试图处理+700个基因和+450个样本,基因样本组合的列表对于excel来说有些费劲,我必须找到另一个解决方案,因为我收集的样本越来越多

任何帮助都将不胜感激

干杯


Max

以下是如何从
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)

df1我们可以从
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   

可能重复@MaxCummins您可以在之后对其进行总结以获得平均值