如图1所示为site(样点),species(物种),abun(物种丰富)长矩阵转化宽矩阵,收集了三种方法。
#方法一:使用reshape2()包,melth()函数,dcast()函数
df <- read.csv(file.choose(),header = T,row.names = 1)
#数据提取
library(reshape2)
md1<-melt(df,id=c("species","site"))
newdata<-dcast(md1,species~site)
#dcast(#species表示新的矩阵的行名,site代表的是新的矩阵的列名)
write.csv(newdata,file = "D:/juzhen/juzhen.csv")
#D:代表D盘,juzhen代表文件,juzhen.csv代表生成表名及格式。也可以write.table( newdata,file = "D:/juzhen/juzhen.csv")
#第二种方法(使用tidyverse()包,pivot_wider()函数
library(tidyverse)
#install.packages("rio")
library(rio)
df1<-df %>% pivot_wider(id_cols = species,names_from =site,values_from = abun )
#id_cols表示的是行名,names_from表示的是列名,values_from代表值。
export(df1,file="D:/juzhen/juzhen5.csv")
#export一种新的输出方式,是rio()包中的。
#第三种方法 tidyverse()包,中的tidyr::pivot_wider
library(tidyverse)
dff<-df%>%tidyr::pivot_wider(names_from = site,values_from = abun,values_fill = 0)%>% data.frame()
write.csv(dff,file = "D:/juzhen/juzhen4.csv")