我是使用reshape2及其功能的新手。我有一个数据表,d,我正在尝试汇总多年来车站物种数量的数据,以获得每年所有站点的每个物种的平均数:
d<-data.table(station=c(1,1,4,3),year=c(2000,2000,2001,2000),
species=c("cat","dog","dog","owl"),abundance=c(10,20,30,10))
d
> station year species abundance
1: 1 2000 cat 10
2: 1 2000 dog 20
3: 4 2001 dog 30
4: 3 2000 owl 10
我使用dcast来聚合丰度,但我似乎得到的是一个忽略NaN结果而不是平均值的总和:
dm<-dcast(d, year~ species,value.var="abundance",fun.aggregate = mean)
dm
> year cat dog owl
1: 2000 10 20 10
2: 2001 NaN 30 NaN
我想要的是:
> year cat dog owl
1: 2000 3.33 6.67 3.33
2: 2001 0 30 0
使用argment fill = 0只会导致NaN被0替换。
我非常感谢任何建议。我已阅读文档并寻找教程,但未能解决此问题。
答案 0 :(得分:0)
使用术语&#34;表示&#34;不是特别标准。我认为创建一个名为mean_abundance
的新变量将是最好的解决方案。
d[, mean_abundance := abundance/length(abundance), by = year]
dm <- dcast(d, year~ species,value.var="mean_abundance")
dm[is.na(dm)] <- 0
答案 1 :(得分:0)
我们可以使用FlexBox
customData