【问题标题】:How to write a table from R into Excel如何将R中的表格写入Excel
【发布时间】:2013-10-02 13:37:46
【问题描述】:

我正在尝试将 R 中的表格写入 Excel。下面是一些示例代码:

library(XLConnect)
wb     <- loadWorkbook("C:\\Users\\Bob\\Desktop\\Example.xls", create=TRUE)
output <- as.table(output)
createSheet(wb, name="Worksheet 1")
writeWorksheet(wb, output, sheet="Worksheet 1")
saveWorkbook(wb)

但似乎writeWorksheet 函数将表格转换为数据框。这使数据看起来混乱且未格式化。我希望保留表结构。如何修改上面的代码?

【问题讨论】:

  • 原来的output对象是什么类?您是否尝试过将其直接插入writeWorksheet 而不先将其转换为表格? “将表格(...)写入 Excel”是指您希望文件具有 XLS 扩展名还是更通用的东西,例如 CSV?
  • @John 我不同意。这里的问题是writeWorksheet 将表格转换为数据框,这实际上将表格从宽格式转换为长格式。
  • OK joran,我承认这是两个常见问题的交集,可以通过更多搜索来回答。我想我可以同时看到它。我会继续投票。我相信尝试进行一些搜索并解决这个问题会导致与我们在这里遇到的不同的问题......如果它最终导致一个问题。

标签: r excel


【解决方案1】:

这里的问题是writeWorksheet 将表格对象转换为数据框。发生的方式是 R 基本上会将其“融化”为长格式,而表格对象通常以“宽”格式打印到控制台。

这有点麻烦,但您通常必须手动将表格转换为与您所追求的格式相匹配的数据框。一个例子:

library(reshape2)
tbl <- with(mtcars,table(cyl,gear))
> tbl
   gear
cyl  3  4  5
  4  1  8  2
  6  2  4  1
  8 12  0  2
> as.data.frame(tbl)
  cyl gear Freq
1   4    3    1
2   6    3    2
3   8    3   12
4   4    4    8
5   6    4    4
6   8    4    0
7   4    5    2
8   6    5    1
9   8    5    2
> tbl_df <- as.data.frame(tbl)
> final <- dcast(tbl_df,cyl~gear,value.var = "Freq")
> final
  cyl  3 4 5
1   4  1 8 2
2   6  2 4 1
3   8 12 0 2
> class(final)
[1] "data.frame"

那么您应该可以毫无问题地将那个数据框写入Excel工作表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2013-02-06
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多