【发布时间】:2014-10-01 15:50:04
【问题描述】:
我正在尝试使用 xlsx 包来帮助清理复杂的数据集,因为有新数据进来。我的目标是实现如下所示的工作流程:
- 将数据导入R,做一些编码数据清理。
- 将数据写入 xls 文件,保存到保管箱文件夹中
- 不具备 R 知识的同事(和我自己)随后可以进行手动数据清理
- 随着更多数据进入,我重复第 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