阻止 R write.xlsx 将宽数据转换为长数据
Stop R write.xlsx from turning wide data to long
我需要输出数据到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
如果有人能帮助我理解为什么会发生这种情况或如何纠正它,我将不胜感激。
?write.xlsx
的 "details" 部分提到:
If x is not a data.frame it will be converted to one.
我推测它是使用 as.data.frame
来实现的。
当使用as.data.frame
将table
对象转换为data.frame
时,table的原始结构变为"long"格式,这就是您在这里看到的。
要解决此问题,请使用 as.data.frame.matrix
,如下所示:
write.xlsx(as.data.frame.matrix(myTable), "myFile.xlsx")
我需要输出数据到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
如果有人能帮助我理解为什么会发生这种情况或如何纠正它,我将不胜感激。
?write.xlsx
的 "details" 部分提到:
If x is not a data.frame it will be converted to one.
我推测它是使用 as.data.frame
来实现的。
当使用as.data.frame
将table
对象转换为data.frame
时,table的原始结构变为"long"格式,这就是您在这里看到的。
要解决此问题,请使用 as.data.frame.matrix
,如下所示:
write.xlsx(as.data.frame.matrix(myTable), "myFile.xlsx")