【发布时间】:2017-10-19 01:36:09
【问题描述】:
我有一个这样的数据框:
set.seed(456)
df <- data.frame(site = c(rep("Site1", 10), rep("Site2", 9)),
genus = c(rep("sp1", 5), rep("sp2", 5), rep("sp1", 5), rep("sp2", 2), rep("sp3", 2)),
abun = rnorm(19, 10,1))
我需要制作一个数据框,将因子site 的级别转换为变量。因此,site1 和site2 将成为一个变量,这些变量中的数据将是这些站点上genus 级别的abun 值。由于并非所有站点都具有相同的genus 或该属的相同数量的个体,因此没有物种或这些物种的代表很少的站点将用零填充。
本例中的数据将显示为:
output<- data.frame(genus = c(rep("sp1", 5), rep("sp2", 5), rep("sp3", 2)),
site1 = c(9,22,74,86,79, 34,9,29,24,39,0,0),
site2 = c(38,22,76,83,60, 66,85,0,0,0, 46,72))
我尝试了各种版本的 tidyverse mutate 或 reshape 函数,但无法获得所需的输出,也不知道如何获取零来填充空数据。
【问题讨论】: