Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据列中的值和阈值保持值删除行_R_Bioinformatics - Fatal编程技术网

R 根据列中的值和阈值保持值删除行

R 根据列中的值和阈值保持值删除行,r,bioinformatics,R,Bioinformatics,我有一张桌子,开始如下: SM_H1455 SM_H1456 SM_H1457 SM_H1461 SM_H1462 SM_H1463 ENSG00000001617.7 0 0 0 0 0 0 ENSG00000001626.9 0

我有一张桌子,开始如下:

                       SM_H1455     SM_H1456  SM_H1457   SM_H1461     SM_H1462     SM_H1463 
ENSG00000001617.7         0            0          0           0          0           0                              
ENSG00000001626.9         0            0          0           0          0           0                                                            
ENSG00000002587.5         10           0          6           2          0           2                                               
ENSG00000002726.15        8            14         0           2          16          2                                                                
ENSG00000002745.8         6            2          2           0          0           4                                 
我想删除>=80%的列的值为0的行。这里有6列,如果一行中有5列或更多列的值为0,那么该行需要删除

我目前有以下代码:

data = data[!rowSums(data == 0), ]
但这段代码删除所有行,只要它们有一个0,而不考虑80%的阈值保持

你很接近:

data <- data[rowSums(data != 0)/ncol(data) > 0.2, ]
数据0.2,]

我认为@Hong Ooi的答案在这种情况下是不正确的。这将为您提供您要求的结果:

data <- data[rowSums(data==0)/ncol(data) < 0.8, ]

data Hi,sry可能会很痛苦,但您介意解释一下您的代码吗?用
ncol
除以
rowSums
有什么作用?哎呀,省去了
!=行和中的0
。正如@Cnrl所解释的那样。删除包含80%或更多零的行与保留包含20%或更多非零的行相同。非常感谢您的详细解释!很清楚:——)