如何将R中数据框中的数据附加到已存在的Excel工作表中

我已经在R中创建了几十个数据框,并希望将它们全部附加到Excel文件中的一个工作表中

以下是我为寻找答案而查看的两个页面(我没有10个声誉,因此无法粘贴我访问过的所有四个网页URL):

使用R软件包xlsx将数据写入Excel文件
作者说:“您还可以使用addDataFrame函数的startRow和startCol参数将数据帧添加到工作表中的特定起始位置。”
以下是建议的代码:

workbook.sheets工作簿.test addDataFrame(x=sample.dataframe,sheet=workbook.test,
row.names=FALSE,startColumn=4)#从第1行第4列开始将数据写入工作表
保存工作簿(workbook.sheets,“test.excelfile.xlsx”)#当然您需要保存它。

基于这一建议,这是我在RStudio中的尝试:

添加数据帧(df_fl1,sheet=“AllData2.xlsx”,startRow=712)

这是R的输出:
工作表$Get工作簿中出错:$运算符对于原子向量无效

我也尝试过这个页面:

阅读Excel文件并将其导入R的教程
但是,如果要将数据帧写入已存在的文件,可以执行以下命令:

write.xlsx(df,
“<现有文件的名称和扩展名>”,
sheetName=“数据框”
append=TRUE)
write.xlsx(df_fl3,“AllData2.xlsx”,sheetName=“Salinity1”,append=TRUE)

我尝试了这个代码,它重写了工作表中已经存在的数据。如何将数据框中的数据附加到Excel工作表中

附加到现有的Excel工作表有点麻烦。相反,将所有Excel数据文件读入R,在R中合并,然后将单个合并数据框写入新的Excel文件(如果不需要将数据写入Excel工作簿,则写入csv文件)。请参阅下面的代码,了解简单方法和困难方法

简单方法:在R中完成所有工作,并在末尾保存单个组合数据帧

例如,如果所有Excel数据文件都在当前工作目录中,并且每个Excel文件中的第一个工作表都包含数据,则可以执行以下操作:

库(xlsx)
#获取文件名
file.names=list.files(pattern=“xlsx$”)
#把它们读入一个列表
df.list=lappy(file.names,read.xlsx,sheetIndex=1,header=TRUE)

然后将它们组合成单个数据帧并写入磁盘:

df=do.call(rbind,df.list)
write.xlsx(df,“combinedData.xlsx”,sheetName=“data”,row.names=FALSE)

困难方法:将连续数据框附加到预先存在的Excel工作表中

创建要写入Excel的数据帧列表(如上所述,在实际用例中,您将把数据文件读入R中的列表)。我们将使用内置的iris数据框进行说明:

df.list=split(虹膜,虹膜$Species)

要将每个数据框写入单个Excel工作表,请首先创建Excel工作簿和要写入数据的工作表:

wb=create工作簿()
图纸=创建图纸(wb,“数据”)
#添加第一个数据帧
addDataFrame(df.list[[1]],sheet=sheet,row.names=FALSE,startRow=1)

现在使用循环附加所有剩余的数据帧。每次递增startRow,以便将下一个数据帧写入正确的位置

startRow=nrow(df.list[[1]])+2
用于(i/2:长度(测向列表)){
addDataFrame(df.list[[i]],sheet=sheet,row.names=FALSE,col.names=FALSE,
startRow=startRow)
startRow=startRow+nrow(df.list[[i]]
}

保存工作簿:

保存工作簿(wb,“combinedData.xlsx”)

addDataFrame如果您希望在Excel工作表的各个部分中布局各种汇总表,并使其看起来更美观,那么它非常有用。但是,如果您只是将原始数据合并到单个数据文件中,我认为在R中完成所有工作,然后在最后将合并的数据框写入Excel工作表(或csv文件)会容易得多

发表评论