【问题标题】:Append new data to formatted xlsx worksheet using R使用 R 将新数据附加到格式化的 xlsx 工作表
【发布时间】:2014-10-01 15:50:04
【问题描述】:

我正在尝试使用 xlsx 包来帮助清理复杂的数据集,因为有新数据进来。我的目标是实现如下所示的工作流程:

  1. 将数据导入R,做一些编码数据清理。
  2. 将数据写入 xls 文件,保存到保管箱文件夹中
  3. 不具备 R 知识的同事(和我自己)随后可以进行手动数据清理
  4. 随着更多数据进入,我重复第 1 步,然后将其附加到现有 XLS 文件中,保留格式,例如突出显示、cmets 或粗体。

最后,我很好奇我是否希望它能够跨 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 中定义格式,但我找不到可以读取然后重写格式的命令

【问题讨论】:

  • 也许您可以重新考虑您的工作流程。如果您添加带有额外数据清理信息的列(例如,当记录被认为重要时,在重要性列中添加标签 1。),那么您可以将数据框保存为 .csv 文件,再次读取以添加新的记录并将其保存为相同的 .csv 文件,并将所有标签保留在额外的列中。
  • 很抱歉不小心把我的评论作为答案。请问有人能删吗?自己做不到。

标签: xml r excel formatting data-cleaning


【解决方案1】:

XLConnect 包可以做这种事情。看看? appendWorksheet

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 2019-01-16
    • 2020-08-04
    • 2012-04-04
    • 1970-01-01
    • 2020-10-30
    • 2017-10-01
    • 2016-12-16
    相关资源
    最近更新 更多