我需要将数据输出到xlsx,并且XLSX包似乎被广泛使用。
然而,使用它似乎将宽数据转换为长数据。我想在导出到Excel时保持数据的广泛。
library(xlsx)
myTable <- xtabs(mpg~carb+cyl, mtcars)
myTable
write.xlsx(myTable, "myFile.xlsx")
上面的代码是一个可以证明问题的最小例子。
控制台将输出myTable,如下所示:
> myTable
cyl
carb 4 6 8
1 137.9 39.5 0.0
2 155.4 0.0 68.6
3 0.0 0.0 48.9
4 0.0 79.0 78.9
6 0.0 19.7 0.0
8 0.0 0.0 15.0
但是,Excel文件将以长格式显示相同的数据,如下所示:
carb cyl Freq
1 1 4 137.9
2 2 4 155.4
3 3 4 0
4 4 4 0
5 6 4 0
6 8 4 0
7 1 6 39.5
8 2 6 0
9 3 6 0
10 4 6 79
11 6 6 19.7
12 8 6 0
13 1 8 0
14 2 8 68.6
15 3 8 48.9
16 4 8 78.9
17 6 8 0
18 8 8 15
如果有人能帮助我理解为什么会发生这种情况或如何纠正它,我会很感激。
答案 0 :(得分:1)
在?write.xlsx
的“详情”部分,提到:
如果x不是data.frame,它将被转换为一个。
我认为它是使用as.data.frame
来实现的。
使用table
将data.frame
对象转换为as.data.frame
时,表格的原始结构将更改为“长”格式,这就是您在此处看到的内容。
要解决此问题,请使用as.data.frame.matrix
,如下所示:
write.xlsx(as.data.frame.matrix(myTable), "myFile.xlsx")