【问题标题】:Manipulating seperated species quantity data into a species abundance matrix将分离的物种数量数据处理成物种丰度矩阵
【发布时间】:2014-08-18 15:31:39
【问题描述】:

我希望有人可以帮助在 R 中进行一些数据操作,我正在努力让它工作,因为数据目前的格式有点奇怪。

我需要一个物种丰度表来运行 vegan 中的一些功能。

但是,当我收集数据时,我以一种不太兼容的方式输入数据,因为我必须保持从同一地点收集的物种按日期和其他程序所需的其他因素分开。

所以我的数据目前看起来像这样:

df <- data.frame (Site=c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3),
species=c("a","a","a","b","b","c","a","b","b","b","c","d","a","b","c","f","f","f"),
Quantity=c(3,1,1,2,3,3,5,12,1,2,4,1,5,6,3,1,1,1))

而我试图操纵它的是一个丰度矩阵,比如:

colA= c(1,2,3)
colB=c(5,5,5)
colC=c(5,15,6)
colD=c(3,4,3)
colE=c(0,1,0)
colF=c(0,0,1)
colG=c(0,0,2)
df= data.frame (site=colA, SpeciesA=colB, SpeciesB=colC,SpeciesC=colD,SpeciesD=colE,SpeciesE=colF,SpeciesF=colG)

我的第一个计划是循环遍历每个站点,然后循环遍历站点内的每个分类单元,然后我将每个分类单元的数量总和 cbind 到数据表中,问题发生在我最终会得到许多表,每个站点的列数不同,然后就不能将它们绑定在一起。

非常感谢任何帮助或建议。

非常感谢。

【问题讨论】:

    标签: r data-manipulation


    【解决方案1】:
    library(reshape2) 
    res <- dcast(df, Site~species, value.var="Quantity", sum)
     colnames(res) <- c("site", paste0("Species", LETTERS[c(1:4,6)]))
     res
     #   site SpeciesA SpeciesB SpeciesC SpeciesD SpeciesF
     # 1    1        5        5        3        0        0
     # 2    2        5       15        4        1        0
     # 3    3        5        6        3        0        3
    

    【讨论】:

    • 完美!谢谢,我确实尝试过 dcast,但没有意识到您可以将 sum 添加到其中。
    • 它说我需要等几分钟,但会的!
    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2018-03-31
    • 2018-03-07
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    相关资源
    最近更新 更多