簡體   English   中英

阻止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的“詳細信息”部分中,它提到:

如果x不是data.frame,它將轉換為1。

我猜想是使用as.data.frame做到的。

當使用as.data.frametable對象轉換為data.frame ,表的原始結構將更改為“長”格式,這就是您在此處看到的。

要解決此問題,請使用as.data.frame.matrix ,如下所示:

write.xlsx(as.data.frame.matrix(myTable), "myFile.xlsx")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM