2

target_id基本的に、2つの列(および)を持つデータフレームがありますfpkm。重複していない最初の列の行名のみを保持したい。
たとえば、以下のデータフレームでは、(ほぼ) 同じ名前の 2 つの行名があり、両方からのもので、列 2 の高い値に基づいてcomp267138_c0_seq1 comp267138_c0_seq21 つだけを保持したいことがわかります。comp267138_c0_seq2

       target_id        fpkm
comp247393_c0_seq1    3.197885
comp257058_c0_seq4    1.624577
comp242590_c0_seq1    1.750319
comp77911_c0_seq1     1.293059
comp241426_c0_seq1    1.626589
comp288413_c0_seq1   14.828853
comp294436_c0_seq1   11.555596
comp63603_c0_seq1     1.982386
comp267138_c0_seq1    8.594494
comp267138_c0_seq2   11.134958
comp321623_c0_seq1    6.934149
4

1 に答える 1

1

の一部のみを考慮したいようですtarget_id(最初の2つのコンポーネント、 で分割_

あなたdata.frameが呼ばれた場合DT

# create   column without the _seqx part
DT$new_id <- sapply(lapply(strsplit(as.character(DT[['target_id']]), '_'), head, 2),
              paste, collapse = '_')
library(plyr)


ddply(DT, .(new_id), function(x) x[which.max(x$fpkm),])
于 2012-10-18T05:04:02.563 に答える