繁体   English   中英

将 describe.by (package psych) 导出为 R 中的 csv 文件

[英]Export describe.by (package psych) as csv file in R

有谁知道如何在 R 中将 describe.by 统计信息导出到 csv? 我收到这条消息:

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

功能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

实际上,describeBy 中有一个选项可以为此创建矩阵形式输出。 使用原始数据,

describeBy(pag,pag$Jogo,mat=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 版(即将发布)中修复了这个问题。

账单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM