我知道如果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
答案 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