[英]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.