我正在尝试使用xlsx
包来帮助清理复杂的数据集,因为新数据会出现。我的目标是实现如下工作流程:
最后,我很好奇是否相关我希望这可以在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定义格式,但我找不到可以读取然后重写格式的命令
答案 0 :(得分: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 )