我正在尝试计算两个物种的平均茎数之间的协方差(或相关性)。茎计数值的平均值在“ avg”列中,并且物种在“ Spnum”列中一起列出,并为其分配ID 2和18。我想按年,季节和处理方式拆分这些计算。
我相信我正在接近使用ddply,但是我一直在努力弄清楚如何告诉ddply值是在与所测物种不同的单独列(“ avg”)中。
row.namesYear Spnum avg Season Treatment
1 1 2005 2 21.8 early delay
2 7 2005 18 18.5 early delay
3 31 2005 2 24.5 early delay
4 37 2005 18 13.2 early delay
5 60 2005 2 20.7 early ambi
6 66 2005 18 31.0 early ambi
7 89 2005 2 36.5 early ambi
...
这是使用dplyr
和的两个选项data.table
。我们将“年份”,“季节”,“治疗”变量分组,然后再次获得cor
与“ Spnum”值2对应的“ avg”,再到“ Spnum”值18(avg[Spnum==18]
)。
library(dplyr)
df1 %>%
group_by(Year, Season, Treatment) %>%
summarise(Cor= cor(avg[Spnum==2], avg[Spnum==18]))
或使用data.table
,我们将'data.frame'转换为'data.table'(setDT(df1)
)。按变量分组(如上所述),我们得到cor
。
library(data.table)
setDT(df1)[, list(Cor= cor(avg[Spnum==2], avg[Spnum==18])), by =.(Year, Season, Treatment)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句