【问题标题】:Exporting two data frames into same file将两个数据框导出到同一个文件中
【发布时间】:2018-01-26 09:35:48
【问题描述】:

我目前有两个数据框,一个 DF 包含约 100,000 行,而另一个只有约 1000 行。我可以使用如下所示的 write.table 函数导出其中任何一个...

 write.table(DF_1, file = paste("DF_one.csv" ),
        row.names = F, col.names = T, sep = ",")

这个很容易用excel打开,效果很好。问题是我需要在同一个 excel 文件中包含其他数据框,我不确定如何执行此操作,或者是否可能。

我对任何想法持开放态度,并在下面提供了一些示例数据。

#Example data for data frame one, length =30
Dates<-c(Sys.Date()+1:30)
Data1<-c(1+1:30)

#Data Frame One
Df1<-data.frame(Dates,Data1)

#Example data for data rame two, length=10
Letters<-c(letters[1:10])
Data2<-c(1:10)

#Data Frame Two
Df2<-data.frame(Letters,Data2)

#Now, is there a way can we export both to the same file? 

#Here is the export for just data frame one
write.table(Df1, file = paste("DFone.csv" ),
        row.names = F, col.names = T, sep = ",")

任何想法,包括:“停止挑剔,只需导出 2 个文件,然后合并到 excel 中”,我们将不胜感激。

研究完成:

我喜欢这种方法,但更喜欢水平格式而不是垂直格式 (我可能不应该挑剔)

How to merge multiple data frame into one table and export to Excel?

How to write multiple tables, dataframes, regression results etc - to one excel file?

感谢大家的帮助!

【问题讨论】:

  • 你能显示dput(head(df1))dput(head(df2))吗?并显示您想要的输出的样子。
  • 如果通过“水平格式”你的意思是你想将列附加到现有的 csv,那么你不能这样做,这与 R 无关,而是 csv 的存储方式桌子。
  • @Ala 可能,我只是想基本上在同一个 excel 文件中显示两个数据框,格式化为使它们彼此相邻,而不是一个在另一个之上。再次不确定这是否可能......
  • @Masoud 好吧,答案有点正确的用户删除了他们的,所以你介意只在两个导出命令上使用 append=T 就可以导出它们,并将格式保留为同一个文件。我想将此问题标记为已回答
  • 我不确定你到底是什么意思,但你可以发布你的问题的答案。根据您的问题(寻求“水平附加”,我只是编造了那个词吗?)那个答案不是正确的。您可以回答您的问题,一天后您就可以将其标记为已接受。

标签: r csv append export


【解决方案1】:

我不知道这是否保留了您想要的信息结构,但您确实打算将它们放入同一个表中,您可以执行以下操作。

Both <- data.frame(Df1,Df2)

write.table(Both, file = paste("DF_Both.csv" ),
    row.names = F, col.names = T, sep = ",")

因为第一个解决方案不符合您的要求,这里是另一个将数据框保存到 Excel 电子表格的多个选项卡的解决方案。

install.packages("xlsx")
library(xlsx)

###Define the save.xlsx function

save.xlsx <- function (file, ...)
{
  require(xlsx, quietly = TRUE)
  objects <- list(...)
  fargs <- as.list(match.call(expand.dots = TRUE))
  objnames <- as.character(fargs)[-c(1, 2)]
  nobjects <- length(objects)
  for (i in 1:nobjects) {
    if (i == 1)
      write.xlsx(objects[[i]], file, sheetName = objnames[i])
    else write.xlsx(objects[[i]], file, sheetName = objnames[i],
                    append = TRUE)
  }
  print(paste("Workbook", file, "has", nobjects, "worksheets."))
}

### Save the file to your working directory.

save.xlsx("WorkbookTitle.xlsx", Df1, Df2)

完全披露这是改编自另一个关于堆栈溢出的问题R dataframes to multi sheet Excel Work

【讨论】:

  • 我希望编程如此简单。你不认为你不能做data.frame(df1,df2),因为它们的大小(行数)不同吗?
  • @Masoud 是对的,由于长度不同,数据帧无法合并,不过还是感谢您的帮助
  • 幸运的是,Df1 中的行数是所提供示例中 Df2 中行数的乘积。但这不会一概而论。
  • @Ala 每个数字后面都有~。当它们不是确切的数字时,它们不是彼此相乘。即使在那种情况下。 OP不想在df1旁边写df2 10次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多