数据操作的挑战

时间:2017-06-27 00:11:30

标签: r

我正在尝试处理BLAST输出的数据库,以生成包含给定基因和给定样本的值的数据框。当在样品中鉴定出基因时,我希望报告鉴定它的支架。如果在给定样本中未识别出给定基因,我希望该细胞用N / A填充。

get

输出表格如下所示:

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

在excel中,我已经连接了样本名称和基因标题,并使用VLOOKUP报告了使用VLOOKUP识别此字符串的行上的脚手架编号 - 我在R中尝试了许多不同的方法,并且正在圈内进行。

现在尝试处理+700个基因和+450个样本,基因样本组合的列表对于excel管理变得有些费力,我必须找到另一个解决方案,我的样本集合越来越大。

非常感谢任何帮助。

干杯,

最高

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

我们可以使用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