簡體   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