删除值较小的行

时间:2015-09-17 23:57:49

标签: r dataframe

我知道如果R中的值为0或NA,如何从数据框中删除行。

   df2 <- df[rowSums(df[, -(1:2)]) > 0, ]

我希望删除所有值在0和1之间的任何行(这些是低表达的基因)。

以下是我的数据(df)

gene    Entrez.ID   PM100_Z1_1_RNA  PM117_Z10_1_Case_RNASeq  PM117_Z1_1_Case_RNASeq
A1BG    1   7.1886  0.3574  0.6062
A1BG-AS1    503538  1.9383  1.4106  0.3262
A1CF    29974   3.00E-04    0.0032  0.0431
A2M 2   126.106 41.165  7.6365
A2M-AS1 144571  1.5309  0.7507  0.2549
A2ML1   144568  0.1075  0.5919  1.957
A2MP1   3   0.1319  0.1094  0.889
A3GALT2 127550  0.0842  0.0042  0.0536
A4GALT  53947   27.2484 5.3346  3.2796
A4GNT   51146   0.0375  0.0341  0.0618

1 个答案:

答案 0 :(得分:1)

在您的代码中,您使用的是rowSums(dat),它汇总了行中的值。但是,您实际上想要计算超过1的值的数量,这可以通过rowSums(dat > 1)计算,也就是存储每个值是否超过1的逻辑矩阵的行和。然后,您可以限制为至少行一个值超过1的值:

dat[rowSums(dat[,-(1:2)] > 1) > 0,]
#       gene Entrez.ID PM100_Z1_1_RNA PM117_Z10_1_Case_RNASeq PM117_Z1_1_Case_RNASeq
# 1     A1BG         1         7.1886                  0.3574                 0.6062
# 2 A1BG-AS1    503538         1.9383                  1.4106                 0.3262
# 4      A2M         2       126.1060                 41.1650                 7.6365
# 5  A2M-AS1    144571         1.5309                  0.7507                 0.2549
# 6    A2ML1    144568         0.1075                  0.5919                 1.9570
# 9   A4GALT     53947        27.2484                  5.3346                 3.2796
相关问题