通过R

时间:2015-11-03 09:38:21

标签: r

我试图计算两个物种的平均茎数之间的协方差(或相关性)。干计数值平均值在" 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
...

1 个答案:

答案 0 :(得分:0)

以下是使用dplyrdata.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)]