如何删除OTU数据集中列总和小于5000的样本列
OTU数据集样本列过滤操作实现
基于你提供的
head(otu)输出结构,默认otu数据第一列为ASV编号,其余列为各样本的丰度数值。如果你的数据已经将ASV编号设为行名,可对应调整代码去掉第一列的保留逻辑。
方法1:基础R实现
# 计算所有样本列的总和,排除第一列ASV编号列 col_sums <- colSums(otu[, -1], na.rm = TRUE) # 保留第一列+总和≥5000的样本列 otu_filtered <- otu[, c(TRUE, col_sums >= 5000)]
如果ASV已经设为行名,可使用更简化的代码:
otu_filtered <- otu[, colSums(otu, na.rm = TRUE) >= 5000]
方法2:tidyverse(dplyr)实现
library(dplyr) otu_filtered <- otu %>% # 保留第一列ASV编号,筛选所有数值列中总和≥5000的样本列 select(1, where(~ is.numeric(.) && sum(., na.rm = TRUE) >= 5000))
结果验证
执行以下命令可查看过滤后所有样本列的总和,确认是否都符合≥5000的要求:colSums(otu_filtered[, -1], na.rm = TRUE)
内容的提问来源于stack exchange,提问作者xiuling
相关产品推荐
相关产品推荐

