R语言计算并合并各物种的OTU数量

   使用R语言快速根据不同物种分类对OTU进行合并计算,今天借助R语言中dplyr包及aggregate函数的肩膀,重新编写了一个简易的一键式函数,可以快速帮助大家完成不同分类,单分类,多分类的OTU一键合并,欢迎大家建议和完善~

数据格式
大家需要准备一份OTU/ASV的数据或者其他表示物种丰度的数据。其中列为样方,行为OTUID。

在这里插入图片描述

函数主体

merge_otu <- function(data, formula, e_species=NULL, FUN){
  
  require(dplyr)
  
  df <- as.data.frame(data)
  
  if(!is.null(e_species)){
  
  if(is.character( data[,1])){
    rownames(df) <- df[, 1]
    df <- df[,-1]
    df[is.na(df)] <- 0
    df <- df %>% select( -e_species )
    result <- aggregate(formula , data = df, FUN)
  return(result)
  }
  
  if(! is.character(data[,-1])){
    df[is.na(df)] <- 0
    df <- df %>% select( -e_species )
    result <- aggregate(formula , data = df, FUN)
    return(result)
  }
  }
  
  if(is.null(e_species)){
    
    if(is.character( data[,1])){
      rownames(df) <- df[, 1]
      df <- df[,-1]
      df[is.na(df)] <- 0
      result <- aggregate(formula , data = df, FUN)
      return(result)
    }
    
    if(! is.character(data[,-1])){
      df[is.na(df)] <- 0
      result <- aggregate(formula , data = df, FUN)
      return(result)
    }
  }
}

函数用法
merge_otu( data = otu , formula = . ~ phylum, e_species = c(“class”, “order”, “family”, ‘genus’, “species”), sum)
在这里插入图片描述
参数介绍
data :请使用模板数据格式;
formula :对应的计算公式,如果想对所有物种分类都保留的话可以在phylum基础上 + class + order + family + genus + species,即 . ~ phylum + class + order + family + genus + specie,结果如下
在这里插入图片描述
e_species :对应公式中出现的分类,即要在该参数中设定表示剔除。

需要注意的是,如果所有分类都考虑,请在e_species这个参数中选择默认情况,该参数表示要剔除的分类,也就是意味着,公式中未保留的分类,需要在参数中对应设置。

好比merge_otu( data = otu , formula = . ~ phylum, e_species = c(“class”, “order”, “family”, ‘genus’, “species”), sum),或者上述结果图中的考虑所有分类情况,则e_species 参数默认即可。

FUN :计算汇总统计信息的函数,可应用于所有数据子集。

以上就是该函数所有的介绍信息,本人仅对上述所使用的函数进行简单包装。谨慎使用,不喜勿喷,感谢各位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷在前行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值