2012-09-18 87 views
0

我打周圍的一些概念,R.這個問題設置的多重差異是什麼,我問一個擴展早期here數據中的R

我有一個數據如下

V1 V2 V3 
.. 1 1 
.. 2 1 
.. 1 2 
.. 3 2 

如在先前的問題中,我想累計計算每個值V2的差異V1。但是,我需要根據V3的值拆分數據集,並計算每個單獨數據集的方差。我可以使用split函數來做到這一點,然後使用this答案中描述的技術。有沒有更好的方法來實現相同。

+0

因此,你基本上想要做與上一個問題相同的事情,但是對於'V2'和'V3'而不是'V2'的每一個獨特的組合? – Backlin

+0

不,我想根據'V3'拆分數據幀並計算每個結果數據集的累積方差。 – hardikudeshi

回答

3
# Ben Bolker's solution to your earlier question 
bens.func <- function(d){ 
    u <- sort(unique(d$V2)) 
    ans <- sapply(u,function(x) { 
     with(d,var(V1[V2<=x])) 
    }) 
    names(ans) <- u 
    ans 
} 

# Your new dataset 
d <- data.frame(V1=runif(1000),V2=sample(1:10,size=1000,replace=TRUE), 
       V3=sample(1:10,size=1000,replace=TRUE)) 

# Split and lapply takes care of the rest 
lapply(split(d, d$V3), bens.func) 
+1

或'library(plyr); ddply(d,「V3」,bens.func)' –

+0

是的,就是這樣。基本上,我需要更熟悉申請家庭。謝謝! – hardikudeshi

+1

@hardikudeshi請參閱http://stackoverflow.com/questions/3505701/r-grouping-functions-sapply-vs-lapply-vs-apply-vs-tapply-vs-by-vs-aggrega –