50

我正在编写代码以将数据库从 R 导出到 Excel,我一直在尝试其他代码,包括:

write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t")
write.csv(ALBERTA1,":\ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(df, file = "ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(ALBERTA1, "ALBERTA1.csv")
write.table(ALBERTA1, 'clipboard', sep='\t')
write.table(ALBERTA1,"ALBERTA1.txt")
write.table(as.matrix(ALBERTA2),"ALBERTA2.txt")
write.table(as.matrix(vecm.pred$fcst$Alberta_Females[,1]), "vecm.pred$fcst$Alberta_Females[,1].txt")
write.table(as.matrix(foo),"foo.txt")
write.xlsx(ALBERTA2, "/ALBERTA2.xlsx")
write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t").

该论坛的其他用户建议我:

write.csv2(ALBERTA1, "ALBERTA1.csv")
write.table(kt, "D:/kt.txt", sep="\t", row.names=FALSE)

在此处输入图像描述

您可以在图片上看到我从上面的代码中得到的结果。但是这个数字不能用于进行任何进一步的操作,例如与其他矩阵的加法。

有人遇到过这种问题吗?

4

6 回答 6

68

另一个选项是openxlsx-package。它不依赖于,可以读取、编辑和写入Excel文件。从包装的描述中:

openxlsx 简化了从 R 编写和设置 Excel xlsx 文件样式的过程,并消除了对 Java 的依赖

示例用法:

library(openxlsx)

# read data from an Excel file or Workbook object into a data.frame
df <- read.xlsx('name-of-your-excel-file.xlsx')

# for writing a data.frame or list of data.frames to an xlsx file
write.xlsx(df, 'name-of-your-excel-file.xlsx')

除了这两个基本功能外, -packageopenxlsx还有许多其他用于操作Excel文件的功能。

例如,使用-function,您可以在ExcelwriteDataTable文件中创建格式化表格。

于 2017-09-20T06:39:24.463 回答
36

最近用的xlsx包,效果不错。

library(xlsx)
write.xlsx(x, file, sheetName="Sheet1")

其中 x 是一个 data.frame

于 2014-10-27T03:06:16.263 回答
20

writexl,没有 Java 要求:

# install.packages("writexl")
library(writexl)
tempfile <- write_xlsx(iris)
于 2017-09-19T23:12:06.483 回答
11

WriteXLS包中的WriteXLS函数可以将数据写入 Excel。

或者,来自xlsx包的write.xlsx也可以使用。

于 2013-10-17T13:46:13.920 回答
-1

这是一种通过不同 ID将数据帧中的数据写入 excel 文件并通过与第一级 ID 关联的另一个 ID 写入不同选项卡(工作表)的方法。想象一下,您有一个数据框,email_address其中包含多个不同用户的一列,但每封电子邮件都有许多包含所有数据的“子 ID”。

data <- tibble(id = c(1,2,3,4,5,6,7,8,9), email_address = c(rep('aaa@aaa.com',3), rep('bbb@bbb.com', 3), rep('ccc@ccc.com', 3)))

所以 ids1,2,3将与aaa@aaa.com. 以下代码通过电子邮件拆分数据,然后放入1,2,3不同的选项卡。重要的是append = True在写入.xlsx文件时进行设置。


temp_dir <- tempdir()

for(i in unique(data$email_address)){
    
  data %>% 
    filter(email_address == i) %>% 
    arrange(id) -> subset_data
  
  for(j in unique(subset_data$id)){
    write.xlsx(subset_data %>% filter(id == j), 
      file = str_c(temp_dir,"/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0- 
       9._%+-]+"),'_', Sys.Date(), '.xlsx'), 
      sheetName = as.character(j), 
      append = TRUE)}
 
  }

正则表达式从电子邮件地址中获取名称并将其放入文件名中。

希望有人觉得这很有用。我确信有更优雅的方法可以做到这一点,但它确实有效。

顺便说一句,这是一种将这些单独的文件发送到data.frame. 代码进入第二个循环[j]

  send.mail(from = "sender@sender.com",
            to = i,
          subject = paste("Your report for", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"), 'on', Sys.Date()),
          body = "Your email body",
          authenticate = TRUE,
          smtp = list(host.name = "XXX", port = XXX,
                      user.name = Sys.getenv("XXX"), passwd = Sys.getenv("XXX")),
          attach.files = str_c(temp_dir, "/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"),'_', Sys.Date(), '.xlsx'))


于 2020-07-22T22:01:00.283 回答
-4

我一直在尝试不同的包,包括功能:

install.packages ("prettyR") 

library (prettyR)

delimit.table (Corrvar,"Name the csv.csv") ## Corrvar是我在缩放变量上运行回归的输出中的对象名称。

但是,我为另一个分析的输出(占用模型模型选择输出)尝试了相同的代码,但它不起作用。经过多次尝试和探索,我:

  • Ctrl从 R ( + c)复制输出
  • 在 Excel 表中我粘贴了它(Ctrl+ V
  • 选择数据所在的第一列
  • 在“数据”小插图中,单击“文本到列”

  • 选择分隔选项,点击下一步

  • 勾选“分隔符”中的空格框,点击下一步

  • 点击完成(结束)

您现在的输出应该是您可以在 excel 中轻松操作的形式。因此,这可能不是最好的选择,但如果您只想以另一种方式探索数据,它就可以解决问题。

PS。如果 excel 中的标签不是确切的标签,那是因为我从我的西班牙语 excel 中翻译了标签。

于 2015-09-12T18:28:22.113 回答