获取一列data.table中每个因子的计数。由另外两列分列

时间:2014-06-22 15:05:02

标签: r data.table lapply

我的data.table包含一列DT$Locale

具有以下条目:

DT[,unique(Locale)]

downstream                upstream                  intergenic                intron                    intron,nc                 regulatory                synonymous               
non_coding_exon,nc        5_prime_UTR               splice,5_prime_UTR        splice,intron             missense                  3_prime_UTR               splice,intron,nc         
splice,synonymous         splice_donor              synonymous,NMD            mature_miRNA              splice_donor,nc           splice_acceptor           3_prime_UTR,NMD          
stop_gained               missense,NMD              5_prime_UTR,NMD           intron,NMD                splice,intron,NMD         splice,non_coding_exon,nc missense,splice          
splice_acceptor,nc        coding_sequence,NMD       missense,splice,NMD       stop_lost                 initiator_codon           splice_acceptor,NMD

我还有另外两列,具有以下格式:

DT[,unique(Cohort)]
[1] CEU   Lupus RA    YRI  RALoci

DT[,unique(Locus)]

 [1] 1.110927656.111927656  1.194335780.195335780  1.217775877.218775877  1.236880267.237880267  1.85471701.86471701    10.52963302.53963302   10.6118896.7118896    
 [8] 10.74879027.75879027   11.20046869.21046869   12.37676238.38676238   12.38077040.39077040   13.92438484.93438484   14.47539055.48539055   14.89244697.90244697  
[15] 14.98090299.99090299   14.98556636.99556636   15.101213744.102213744 15.47426024.48426024   16.13885034.14885034   16.27399400.28399400   16.48056833.49056833  
[22] 16.5898498.6898498     16.63172805.64172805   16.76469520.77469520   16.86513832.87513832   17.4148334.5148334     18.4824309.5824309     18.54958827.55958827  
[29] 2.146859650.147859650  2.229978358.230978358  2.86605444.87605444    20.19570642.20570642   22.39592645.40592645   3.41789975.42789975    3.7782962.8782962     
[36] 3.85190848.86190848    4.141037599.142037599  4.29959034.30959034    5.128060465.129060465  5.65898794.66898794    5.7513893.8513893      6.56405042.57405042   
[43] 7.124946062.125946062  8.18012618.19012618    9.28933416.29933416    9.87628311.88628311   

我希望DT$LocaleDT$Cohort的每个组合都计算DT$Locus中每个条目的类型。

在我看来,图书馆data.table代表了一种有效的方法,所以我尝试过这样的事情:

DT[,sum(unique(Locale)),by="Locus,Cohort"],但这会返回一个错误 - 在我看来,使用lapply可能有一种简单的方法可以做到这一点,但我还没有找到正确的语法,有人能提供解决方案吗?

注意:回复帖子:

RALociDT[,list(count=length(unique(Locale3))),by="Locus,Cohort"]
                     Locus Cohort count
  1: 1.110927656.111927656    CEU    14
  2: 1.110927656.111927656  Lupus    15
  3: 1.110927656.111927656     RA    14
  4: 1.110927656.111927656    YRI    13
  5: 1.194335780.195335780    CEU     4
 ---                                   
180:   9.28933416.29933416    YRI     4
181:   9.87628311.88628311    CEU    11
182:   9.87628311.88628311  Lupus    10
183:   9.87628311.88628311     RA     9
184:   9.87628311.88628311    YRI    11

返回列表中显示的项目数,而不是每个项目出现次数的计数(通过轨迹和同类群组)。

2 个答案:

答案 0 :(得分:2)

尝试DT[,list(count=length(unique(Locale))),by=c("Locus","Cohort")]

当您想要唯一值向量的sum时,尝试length区别设置的唯一值。

答案 1 :(得分:-1)

由于没有明确“每次出现的次数”和“有多少次出现”之间的区别,所以让人感到困惑。我们大多数人听起来都是一样的。也许您只是想将Locale添加到分组向量中:

 DT[, table(Locale, Locus, Cohort)]

这样可以计算每个Locale - 类型出现在每个具有任何代表性的基因座和群组中的次数。