1

流れるような大きなデータセットがあり、これを簡単に検索したい:

>mydata

    ID              TF

    hsa-let-7a-1    SRF
    hsa-let-7a-1    PPARG
    hsa-let-7a-2    AREB6
    hsa-let-7a-3    1-Oct
    hsa-let-7a-3    SRF
    hsa-let-7a-3    PPARG
    hsa-let-7b      SRF
    .               .
    .               .
    .               .

問題: 与えられた について、内で同じ TF を持つy<- c("hsa-let-7a-3","hsa-let-7a-1","hsa-let-7b"...)要素を見つけます。の一部の要素が にない可能性があるため、チェックは ! にある y の要素に対して行う必要があります。ymydatayIDID

最後に、クラスターまたはグループのようにそれらを出力します。各グループ/クラスター ID には同一TFの . 問題は、 mydata に異なる .id を持つ同一の ID があることですTF。Rでこれを実装するのを手伝ってくれる人はいますか? 約例から期待される出力は(出力のすべての ID は にありますが、すべての要素がyにあるわけではありません!) : yID

            ID                TF

>group1       hsa-let-7a-1      SRF
              hsa-let-7a-3      SRF
              hsa-let-7b        SRF

>group2       hsa-let-7a-1      PPARG
              hsa-let-7a-3      PPARG
4

2 に答える 2

1

data.tableライブラリも使える

library(data.table)
mydata<-data.table(mydata)
#order by TF
setkey(mydata,TF)
# Subset data where ID is in y, by group, where each group has more than 1 rows:
z<-mydata[ID %in% y,]
s<-z[,.N>1,by = TF]
#The output of s will be like:
      TF    V1
1: 1-Oct FALSE
2: PPARG  TRUE
3:   SRF  TRUE
# Get output by group
z[TF %in% s[V1==T]$TF]
于 2013-09-24T06:01:33.363 に答える
1

これを試して:

out <- subset(mydata, ID %in% y)
out <- split(out, out$TF)
out <- out[sapply(out, nrow) > 1]

これは、data.frames のリストを返します。1 つにつき 1 つTF、2 つ以上の一致があります。

于 2013-09-24T04:36:17.287 に答える