微生物 OTU ASV Feature table过滤2 基于qiime2的bar plot导出的

#导入的是直接bar导出的csv【有group变量】
originaldata=read.csv("level-6.csv.csv",row.names = 1,header=F)
dim(originaldata)
data1=originaldata
ncol(data1) 
data1 <- data1[,-114]  #去掉最后一列分组的
ncol(data1)
data2 <- as.data.frame(t(data1))
library(tidyverse)
data3 <- rownames_to_column(data2,var='id')
nrow(data3)
taxonomy <- data3[1:113,1:2]
#检查下
table(taxonomy$id == rownames(data2))

#用来过滤的数据是
#去掉第一行
data <- data1[-1,]

data[1:3,1:3] #此时的{=样本} 列为OTU

#转化为数值
dim(data)  #
str(data[1:3]) #需要转化成数值
data[,1:113]<-lapply(data[,1:113],as.numeric)
#ASVs with fewer than 10 reads were removed.
data[data < 10] <- 0

#过滤方法1
library(Hmisc)

#相对丰度转化

A=data  #行=样本
C=A/rowSums(A)
genus=t(C)

#可选事先过滤一些低丰度或低频的类群,行=OTU
#例如只保留相对丰度总和高于 0.02% 的属
genus <- genus[which(rowSums(genus) >= 0.0002), ] 

genus1 <- genus
#大于0的赋值为1
genus1[genus1>0] <- 1
#上一步大于0变成1后,下一步合算1多少个,保留下来 259*20%=51.8
genus <- genus[which(rowSums(genus1) >=52 ), ]  
#例如只保留在 52个及以上样本中出现的属


#合并Taxonomy
genus <- as.data.frame(genus)
genus2 <- rownames_to_column(genus,var='no')

final <- left_join(genus2,taxonomy,
                    by=c('no'='id'))  #向data1的names1有的合并(全部变量)
final <- select(final,index,everything())
final <- select(final,-no)
final[1:2,1:2]
#导出数据
write.csv(final,"L6_filter_0.0002.csv",row.names =FALSE )

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值