有谁知道如何将describe.by statistics导出到R中的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
答案 0 :(得分:8)
函数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 :(得分:3)
实际上,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版本中修复此问题(即将发布)。
比尔