2015-11-03 60 views
2

多個分組變量確定協方差我試圖計算兩個物種的平均莖計數之間的協方差(或相關)。莖數值平均值在「avg」列中,物種在「Spnum」列中一起列出,並且它們被分配了2和18的ID。我想按年份,季節和處理方式分配這些計算。由R中

我相信我越來越接近使用ddply,但我堅持比測定,該品種搞清楚如何告訴ddply該值是在一個單獨的列(「平均」)。

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

你能告訴你的代碼? – akrun

+0

CV <-ddply(rstem.asl,C( 「年」, 「季節」, 「治療」, 「Spnum」),函數(x)的COR(X $ Spnum == 2,X $ Spnum == 18)) –

+0

我發佈了兩個使用dplyr和data.table的選項。請檢查是否有效。 – akrun

回答

0

以下是使用dplyrdata.table的兩個選項。我們按「年」,「季節」,「治療」變量,然後獲得對應於「Spnum」 againsg 18(avg[Spnum==18])的「Spnum」值的2值「平均」的cor

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)] 
+1

非常感謝,這是訣竅! –