2014-02-27 94 views
1

考慮到數據幀種皮和TESTB的(DF)描述統計按組多個變量

Hup Hop testA testB 
Y Hi 1 1 
N Lo 2 2 
Y Mi 3 3 
N No 4 4 
Y Hi 5 5 
N Lo 6 6 
Y Mi 7 7 
N No 8 8 
Y Hi 9 9 
N Lo 10 10 
Y Mi 11 11 
N No 12 12 

我想要的描述性統計(均值和標準差)爲分組變量俠和跳。我想要這樣的事情。

hup testA.mean testA.sd testB.mean testB.sd 
y 7   3.742   7  3.742 
n 6   3.742   6  3.742 
hop testA.mean testA.sd testB.mean testB.sd 
hi etc   Etc   etc  Etc 
lo etc   Etc   etc  Etc 
mi etc   Etc   etc  Etc 

使用例如ddply(df,~hup,summarise,mean=round(mean(testA),3),sd=round(sd(testA),3))將解決部分問題。但我想加快進程:學習如何因此,使用R.,心想:

lapply(df[ , c("testA", "testB")], function(x){ ddply(df, ~df[ , c("hup")], function(x) {mean(x)})})

它不能正常工作,它返回NA的,錯過了SD,並報告結果HUP。

問:如何產生的幾組多個變量描述性統計?

+0

查看'聚合(testA〜Hup + Hop,df,mean)' –

回答

2

對於顯示我想從tablestabular功能是最簡單的:

library(tables) 
tabular(Hup + Hop ~ (testA + testB)*((n = 1) + mean + sd), data = df) 
##  testA   testB   
##  mean sd n mean sd n 
##Hup N 7  3.742 6 7  3.742 6 
## Y 6  3.742 6 6  3.742 6 
##Hop Hi 5  4.000 3 5  4.000 3 
## Lo 6  4.000 3 6  4.000 3 
## Mi 7  4.000 3 7  4.000 3 
## No 8  4.000 3 8  4.000 3 

ü也可以包裝tabular()對象在latex()輸出表中乳膠語法。

+0

謝謝@adibender,似乎'tables'是我找包。尋找合適的(最好的)軟件包來解決問題很困難,因爲軟件包的壓倒性優勢非常明顯。謝謝! – Adam

2
library(reshape2) 
library(plyr) 

dfm <- melt(df, id.vars = c("Hup", "Hop")) 

splits <- list(.(Hup, variable), .(Hop, variable)) 
## or something like 
## splits <- data.frame(rbind(head(names(dfm), -2), "variable")) 
lapply(splits, ddply, .data = dfm, .fun = summarize, mean = mean(value), sd = sd(value)) 

## [[1]] 
## Hup variable mean  sd 
## 1 N testA 7 3.741657 
## 2 N testB 7 3.741657 
## 3 Y testA 6 3.741657 
## 4 Y testB 6 3.741657 

## [[2]] 
## Hop variable mean sd 
## 1 Hi testA 5 4 
## 2 Hi testB 5 4 
## 3 Lo testA 6 4 
## 4 Lo testB 6 4 
## 5 Mi testA 7 4 
## 6 Mi testB 7 4 
## 7 No testA 8 4 
## 8 No testB 8 4 
+0

帶'lapply'和'ddply'的splits選項給了我一個新的見解,謝謝@Jake Burkhead。 – Adam