2013-04-29 80 views
3

有誰知道如何將describe.by statistics導出到R中的csv?我得到這樣的信息:導出describe.by(package psych)爲c中的csv文件R

estatistica <- describe.by(pag,list(pag$Jogo) 

    write.table(estatistica,file="H:/Myfile.csv",sep=",") 
    "Erro em as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
    cannot coerce class ""by"" to a data.frame" 

既然它是這樣一個普遍的問題,一般的例子就可以了。

 Jogo Pais Numero 
      A Canada 1 
      B Canada 2 
      C Canada 1 
      D Canada 4 
      A Brazyl 6 
      B Brazyl 7 
      A France 1 
      B France 1 
      C France 2 
      D France 3 
+1

他。歡迎來到SO。對於那些試圖提供幫助的人來說,提供[可重現的示例]是一般規範(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。這意味着我們可以精確地運行您的示例。也請使用代碼標籤來表示代碼。在文本和'{}'按鈕中使用'\''標記來顯示代碼塊。 – 2013-04-29 13:25:27

+0

我想過舉一個例子,但是這樣一個普遍的問題,我想我不得不這樣做。但我可以做任何例子。 – karips 2013-04-29 13:54:14

回答

6
功能

describeBy()(這應該被用來代替descrive.by()被棄用)產生的數據幀的列表,並且因此不能被寫入與write.table()到文件。

library(psych)  
estatistica <- describeBy(pag,list(pag$Jogo)) 
estatistica 

: A 
     var n mean sd median trimmed mad min max range skew kurtosis se 
Jogo* 1 3 1.00 0.00  1 1.00 0.00 1 1  0 NaN  NaN 0.00 
Pais* 2 3 2.00 1.00  2 2.00 1.48 1 3  2 0.00 -2.33 0.58 
Numero 3 3 2.67 2.89  1 2.67 0.00 1 6  5 0.38 -2.33 1.67 
-------------------------------------------------------------------- 
: B 
     var n mean sd median trimmed mad min max range skew kurtosis se 
Jogo* 1 3 2.00 0.00  2 2.00 0.00 2 2  0 NaN  NaN 0.00 
Pais* 2 3 2.00 1.00  2 2.00 1.48 1 3  2 0.00 -2.33 0.58 
Numero 3 3 3.33 3.21  2 3.33 1.48 1 7  6 0.34 -2.33 1.86 

爲了解決這個問題的一個辦法是把所有的列表元素融入一個數據幀與do.call()rbind(),然後寫入文件。這將會在數據框中將組名添加到原始變量名之前。

estatistica2<-do.call("rbind",estatistica) 
estatistica2 

     var n mean sd median trimmed mad min max range skew kurtosis se 
A.Jogo* 1 3 1.00 0.00 1.0 1.00 0.00 1 1  0 NaN  NaN 0.00 
A.Pais* 2 3 2.00 1.00 2.0 2.00 1.48 1 3  2 0.00 -2.33 0.58 
A.Numero 3 3 2.67 2.89 1.0 2.67 0.00 1 6  5 0.38 -2.33 1.67 
B.Jogo* 1 3 2.00 0.00 2.0 2.00 0.00 2 2  0 NaN  NaN 0.00 
B.Pais* 2 3 2.00 1.00 2.0 2.00 1.48 1 3  2 0.00 -2.33 0.58 
B.Numero 3 3 3.33 3.21 2.0 3.33 1.48 1 7  6 0.34 -2.33 1.86 
C.Jogo* 1 2 3.00 0.00 3.0 3.00 0.00 3 3  0 NaN  NaN 0.00 
C.Pais* 2 2 2.50 0.71 2.5 2.50 0.74 2 3  1 0.00 -2.75 0.50 
C.Numero 3 2 1.50 0.71 1.5 1.50 0.74 1 2  1 0.00 -2.75 0.50 
D.Jogo* 1 2 4.00 0.00 4.0 4.00 0.00 4 4  0 NaN  NaN 0.00 
D.Pais* 2 2 2.50 0.71 2.5 2.50 0.74 2 3  1 0.00 -2.75 0.50 
D.Numero 3 2 3.50 0.71 3.5 3.50 0.74 3 4  1 0.00 -2.75 0.50 
+1

horray爲古老而可敬的do.call(rbind,...)策略。 – 2013-04-29 15:34:29

+0

非常感謝。這正是我需要的! – karips 2013-04-29 16:46:08

+0

如果使用describeBy的矩陣選項,您將獲得可以使用write.table命令寫入的數據框。 – 2013-10-12 21:55:04

1

實際上,describeBy中有一個選項可以創建矩陣形式的輸出。 使用的原始數據,

describeBy(PAG,PAG $ JOGO,墊= TRUE)

 item group1 var n  mean  sd median trimmed mad min max range  skew kurtosis  se 
Jogo*1  1  A 1 3 1.000000 0.0000000 1.0 1.000000 0.0000 1 1  0   NaN  NaN 0.0000000 
Jogo*2  2  B 1 3 2.000000 0.0000000 2.0 2.000000 0.0000 2 2  0  NaN  NaN 0.0000000 
Jogo*3  3  C 1 2 3.000000 0.0000000 3.0 3.000000 0.0000 3 3  0  NaN  NaN 0.0000000 
Jogo*4  4  D 1 2 4.000000 0.0000000 4.0 4.000000 0.0000 4 4  0  NaN  NaN 0.0000000 
Pais*1  5  A 2 3 2.000000 1.0000000 2.0 2.000000 1.4826 1 3  2 0.0000000 -2.333333 0.5773503 
Pais*2  6  B 2 3 2.000000 1.0000000 2.0 2.000000 1.4826 1 3  2 0.0000000 -2.333333 0.5773503 
Pais*3  7  C 2 2 2.500000 0.7071068 2.5 2.500000 0.7413 2 3  1 0.0000000 -2.750000 0.5000000 
Pais*4  8  D 2 2 2.500000 0.7071068 2.5 2.500000 0.7413 2 3  1 0.0000000 -2.750000 0.5000000 
Numero1 9  A 3 3 2.666667 2.8867513 1.0 2.666667 0.0000 1 6  5 0.3849002 -2.333333 1.6666667 
Numero2 10  B 3 3 3.333333 3.2145503 2.0 3.333333 1.4826 1 7  6 0.3434206 -2.333333 1.8559215 
Numero3 11  C 3 2 1.500000 0.7071068 1.5 1.500000 0.7413 1 2  1 0.0000000 -2.750000 0.5000000 
Numero4 12  D 3 2 3.500000 0.7071068 3.5 3.500000 0.7413 3 4  1 0.0000000 -2.750000 0.5000000 

不幸的是,目前的版本不具有圓形輸出describeBy通常情況下。我已經在1.3.6版中解決了這個問題(即將發佈)。

Bill

+0

那麼,它不是版本1.3.6,但1.3.10有這個功能。 (describeBy中的digits選項) – 2013-10-12 21:58:17