0

次のようなサンプルファイルがあります。

GENES Samp1 Samp2 Samp3 Samp4 Samp5 Samp6 Samp7 Samp8
g1    0.000 0.000 0.000 0.000 0.010 0.000 0.022 0.344
g2    0.700 0.000 0.000 0.000 0.000 0.000 0.000 0.000
g3    0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
g4    0.322 0.782 0.000 0.023 0.000 0.000 0.000 0.345
g5    0.010 0.000 0.333 0.000 0.000 0.000 0.011 0.000
g6    0.000 0.000 0.010 0.000 0.000 0.000 0.000 0.000

値が「0.010以上」の「2つ以上のサンプル」がある場合は、行(遺伝子)のリストを取得する必要があります。したがって、次のように結果の列を取得する必要があります。

GENES
g1
g4
g5

誰かがこれで私を助けることができますか?

4

1 に答える 1

6

考えられる方法の 1 つを次に示します。

DF <- read.table(text=
"GENES Samp1 Samp2 Samp3 Samp4 Samp5 Samp6 Samp7 Samp8
g1 0.000 0.000 0.000 0.000 0.010 0.000 0.022 0.344
g2 0.700 0.000 0.000 0.000 0.000 0.000 0.000 0.000
g3 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
g4 0.322 0.782 0.000 0.023 0.000 0.000 0.000 0.345
g5 0.010 0.000 0.333 0.000 0.000 0.000 0.011 0.000
g6 0.000 0.000 0.010 0.000 0.000 0.000 0.000 0.000",header=T,sep=' ')


rows <- sapply(1:nrow(DF),FUN=function(i){sum(DF[i,2:ncol(DF)] >= 0.01) >= 2})
subSet <- DF[rows,]

> subSet
  GENES Samp1 Samp2 Samp3 Samp4 Samp5 Samp6 Samp7 Samp8
1    g1 0.000 0.000 0.000 0.000  0.01     0 0.022 0.344
4    g4 0.322 0.782 0.000 0.023  0.00     0 0.000 0.345
5    g5 0.010 0.000 0.333 0.000  0.00     0 0.011 0.000

または同様にこれ:

subSet <- DF[apply(DF,1,function(x){sum(tail(x,-1) >= 0.01) >= 2}),]

またはこれ:

subSet <- DF[rowSums(DF[,2:ncol(DF)] >= 0.01) >= 2,]

ご覧のとおり、それを達成する方法はたくさんあります:)

于 2012-12-20T14:56:19.693 に答える