otu表格的格式是每行是一个微生物,每列是一个样本,如下截图
image.png
相对丰度就是 在这个样本中微生物的绝对丰度除以这个样本中所有微生物绝度丰度的和
用R语言的tidyverse包来实现,代码
首先是读取数据
代码语言:javascript复制library(tidyverse)
library(readxl)
df<-read_excel("D:/R_4_1_0_working_directory/env001/2024.data/20240609/example_otu.xlsx")
转换代码
代码语言:javascript复制new.df<-df %>%
pivot_longer(!otuID) %>%
group_by(name) %>%
mutate(total=sum(value)) %>%
mutate(relative_abun=value/total) %>%
pivot_wider(id_cols=c("otuID"),names_from = name,values_from = relative_abun)
new.df
基本的思路是:先把otu表格宽格式转换成长格式,然后根据样本分组求和,生成一个新的列,然后用绝对丰度值除以求和列得到相对丰度,最后再转换为长格式
导出excel
代码语言:javascript复制rio::export(new.df,file = "D:/R_4_1_0_working_directory/env001/2024.data/20240609/example_otu_relativeAbun.xlsx")
这里需要用到R包 rio 如果之前没有用过需要单独安装一下