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

如果行(基因)列表具有“2 个或更多样本”且值为“0.010 或更多”,我需要检索它。所以我应该得到如下结果列:

GENES
g1
g4
g5

谁能帮我这个 ?

4

1 回答 1

6

这是一种可能的方法:

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 回答