当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何将R中数据框中的数据附加到已存在的Excel工作表中》经验,为你挑选了1个好方法。

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

以下是我试图找到答案的两个页面(我没有10个声誉,因此我无法粘贴我访问过的所有四个网页网址):

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

workbook.sheets workbook.test addDataFrame(x = sample.dataframe, sheet = workbook.test,
   row.names = FALSE, startColumn = 4) # write data to sheet starting on line 1, column 4
saveWorkbook(workbook.sheets, "test.excelfile.xlsx") # and of course you need to save it.

根据这个建议,这是我在RStudio的尝试:

addDataFrame(df_fl1, sheet = "AllData2.xlsx", startRow = 712)

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

我也试过这个页面:

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

write.xlsx(df, 
           "", 
           sheetName="Data Frame"
           append=TRUE)
write.xlsx(df_fl3, "AllData2.xlsx", sheetName="Salinity1", append=TRUE)

我尝试了这段代码,它覆盖了工作表中已有的数据.如何将数据框中的数据附加到Excel工作表中?



1> eipi10..:

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

简单方法:完成所有工作R并在最后保存单个组合数据框

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

library(xlsx)

# Get file names
file.names = list.files(pattern="xlsx$")

# Read them into a list
df.list = lapply(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(iris, iris$Species)

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

wb = createWorkbook()
sheet = createSheet(wb, "data")

# Add the first data frame
addDataFrame(df.list[[1]], sheet=sheet, row.names=FALSE, startRow=1)

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

startRow = nrow(df.list[[1]]) + 2    

for (i in 2:length(df.list)) {

  addDataFrame(df.list[[i]], sheet=sheet, row.names=FALSE, col.names=FALSE, 
               startRow=startRow)

  startRow = startRow + nrow(df.list[[i]])

  }

保存工作簿:

saveWorkbook(wb, "combinedData.xlsx")

addDataFrame如果要在Excel工作表的各个部分中布局各种汇总表,并使其对于演示文稿看起来很好,则非常有用.但是,如果您只是将原始数据合并到一个数据文件中,我认为在R中完成所有工作要轻松得多,然后在最后将组合数据框写入Excel工作表(或csv文件).

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有