如何使用R提取包含大量0值的列?
我有一个矩阵,有很多列(超过817.000)和40行。我想提取包含大量0的列(例如>30或35,无论数字是多少) 这将提取多个列,我将随机选择一个列,作为矩阵其余部分的参考 有什么想法吗 编辑:如何使用R提取包含大量0值的列?,r,matrix,R,Matrix,我有一个矩阵,有很多列(超过817.000)和40行。我想提取包含大量0的列(例如>30或35,无论数字是多少) 这将提取多个列,我将随机选择一个列,作为矩阵其余部分的参考 有什么想法吗 编辑: OTU0001 OTU0004 OTU0014 OTU0016 OTU0017 OTU0027 OTU0029 OTU0030 Sample_10.rare 0 0 85 0 0 0 0
OTU0001 OTU0004 OTU0014 OTU0016 OTU0017 OTU0027 OTU0029 OTU0030
Sample_10.rare 0 0 85 0 0 0 0 0
Sample_11.rare 0 42 169 0 42 127 0 85
Sample_12.rare 0 0 0 0 0 0 0 42
Sample_13.rare 762 550 2159 127 550 0 677 1397
Sample_14.rare 847 508 2751 169 1397 169 593 1990
Sample_15.rare 1143 593 3725 677 2116 466 212 2286
Sample_16.rare 5630 5291 5291 1270 3852 1185 296 2836
它应该提取4列,
OTU0001 OTU0016 OTU0027 OTU0029
,因为它们各有3个零。如果可能,我想提取提取列的位置。您可以这样做(其中7是相关零的数量):
库(dplyr)
df 7)
带有基本R的选项
Filter(function(x) sum(x == 0) > 7, df)
您可以使用colSums(df==0)
查找有多少个0条目,然后简单地进行筛选。你试过什么吗?我们能看到一个尝试吗?所以对于你的例子,比如mat[,colSums(mat==0)>=3]
FYI,OP说他们有一个矩阵,而不是一个数据帧/tibble
Filter(function(x) sum(x == 0) > 7, df)