繁体   English   中英

使用R将新数据追加到格式化的xlsx工作表中

[英]Append new data to formatted xlsx worksheet using R

我试图使用xlsx包来帮助清理复杂的数据集(随着新数据的到来)。我的目标是使工作流程如下所示:

  1. 将数据导入R,进行一些编码数据清洗。
  2. 将数据写为xls文件,将其保存到保管箱文件夹
  3. 然后,非R识字的同事(和我自己)可以进行手动数据清理
  4. 随着更多数据的输入,我重复步骤1,然后将其追加到现有的XLS文件中, 保留诸如突出显示,注释或加粗等格式

最后,我很好奇是否希望它能跨LibreOffice(在Linux中使用)和Excel(在Windows中使用同事使用)相关。

目前,我无法找到一种方法来将数据追加到现有电子表格中而不完全重写它(从而丢失任何格式)。

这是使用预加载的iris数据集我想做的一个例子:

#Import data, do some coded cleaning:
data = iris[1:10,]
data$Sepal.Ratio = with(data, Sepal.Length/Sepal.Width)
data$Sepal.Length = NULL
data$Sepal.Width = NULL
data$Species = as.character(data$Species)

#Write to excel...
write.xlsx(data,file="ss.xls")

#Manually make some changes
system('soffice /path/to/ss.xls')

(请参见屏幕截图) 在此处输入图片说明在此处输入图片说明

#Load and clean more data...
data = iris[11:20,]
data$Sepal.Ratio = with(data, Sepal.Length/Sepal.Width)
data$Sepal.Length = NULL
data$Sepal.Width = NULL
data$Species = as.character(data$Species)

#Append it to the existing spreadsheet, while preserving previous formatting
???

append=TRUE选项在这里并没有太大帮助,因为它仅用于将工作表添加到工作簿中。

或者,是否可以将电子表格的格式读取为某种R对象,然后将其应用于重写的文件,执行以下操作?

olddat = read.xls('/path/to/ss.xls')
formatting <- someFunctionToExtractFormatting('/path/to/ss.xls')
newdata = rbind(olddata,data)
write.xlsx(newdata,file="ss.xls", FORMATTING=formatting)

有一些类似的命令可以让我从R定义格式,但是我没有找到可以读取然后重新写入格式的命令

XLConnect软件包能够执行此类操作。 看看? appendWorksheet ? appendWorksheet

library(XLConnect)
wb <- loadWorkbook( "ss.xlsx" )
appendWorksheet( wb, data, sheet = "iris" ) # iris is the sheet you want to append data to
saveWorkbook( wb )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM