我试图计算两个物种的平均茎数之间的协方差(或相关性)。干计数值平均值在" avg"列和物种一起列在" Spnum"列中,并且它们被分配了2和18的ID。我想按年,季和治疗分开这些计算。
我相信我越来越接近使用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
...
答案 0 :(得分:0)
以下是使用dplyr
和data.table
的两个选项。我们按照“年”,“季节”,“治疗”等进行分组。变量,然后得到cor
' avg'这对应于' Spnum'价值2再次来自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)]