2017-07-18 34 views
0

我有兩個大的數據集,每個數據都有2000+數據並試圖找出每5行的協方差。如何找到R中每n行的協方差

x=c(1,2,3,4,5) 
y=c(6,7,8,9,10) 
df=data.frame(x,y) 
group=rep(1:length(df),each=2,length=length(df)) 

什麼是我的下一個步驟,所以我可以找到像this`

cov(x[1:2,],y[1:2,]) 

cov(x[3:4,],y[3:4,]) 
+2

有在您的文章,@Ian了一些錯誤的協方差。 'a'沒有定義,'x'和'y'是開頭的向量,但後來他們不是,你有'}'而不是''''。另外,這個問題不是很清楚。 – Suren

+0

對不起。我只是編輯它,是更好的? – Ian

回答

0
library(zoo)  
x = c(1,2,3,4,5) 
y = c(6,7,8,9,10) 
rows = 2 
out = rollapply(data.frame(x,y), rows, function(x) cov(x[,1],x[,2]), 
        by.column=FALSE) 
out 
+0

你介意用rollapply解釋一下嗎?我嘗試在我的data.frame和我的協方差都是相同的結果,因爲某種原因:( – Ian

+0

基本上,'rollapply'適用'co'('''''數據幀中的每個'n'行'x'和'y '(因此'data.frame(x,y)')。因爲你的數據,你得到的值相同(我假設爲'0.5')。試着改變'x = rnorm(5,0,2) '和'y = rnorm(5,0,3)',你會看到不同之處 – AK88

+0

非常感謝你的幫助,我已經得到了解決方案:D – Ian