将数据从R导出到Excel

ht4b089n  于 2022-12-27  发布在  其他
关注(0)|答案(8)|浏览(244)

我正在编写代码,从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)

你可以在图片上看到我从上面的代码中得到的结果,但是这些数字不能用来做任何进一步的运算,比如和其他矩阵相加。
有人遇到过这种问题吗?

56lgkhnf

56lgkhnf1#

另一个选项是openxlsx-软件包。它不依赖于java,可以读取、编辑和写入 * Excel *-文件。
openxlsx简化了从R编写Excelxlsx文件和设置其样式的过程,并消除了对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')

除了这两个基本函数外,openxlsx-包还有许多其他函数用于操作 * Excel *-文件。
例如,使用writeDataTable-函数可以在 * Excel *-文件中创建格式化表格。

6yjfywim

6yjfywim2#

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

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

其中x是 Dataframe

sqyvllje

sqyvllje3#

writexl,无Java要求:

# install.packages("writexl")
library(writexl)
tempfile <- write_xlsx(iris)
lp0sw83n

lp0sw83n4#

WriteXLS包中的 WriteXLS 函数可以将数据写入Excel。
或者,也可以使用xlsx包中的 write.xlsx

6yt4nkrj

6yt4nkrj5#

你也可以使用readODS包,虽然它不能生成.xlsx,但Excel也可以读取开放文档电子表格(ODS)/ LibreOffice文件。

require(readODS)

tmp = file.path(tempdir(), 'iris.ods')
write_ods(iris, tmp)
cgvd09ve

cgvd09ve6#

如果我可以提供一个替代方案,你也可以将你的 Dataframe 保存在一个常规的csv文件中,然后使用Excel中的“get data”函数导入 Dataframe ,这对我来说就像一个护身符,你不需要为R中的任何Excel包而烦恼。

a6b3iqyw

a6b3iqyw7#

以下是一种将数据从数据框写入excel文件的方法,a * 通过**不同的ID,并通过与第一级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放入不同的选项卡中。重要的是在编写.xlsx文件时设置append = True

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'))
tktrz96b

tktrz96b8#

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

install.packages ("prettyR") 

library (prettyR)

delimit.table (Corrvar,"Name the csv.csv")## Corrvar是一个对象的名称,它来自于我运行回归的缩放变量的输出。
然而,我尝试了从另一个分析输出相同的代码(占用模型模型选择输出),它不工作。经过多次尝试和探索,我:

  • 从R复制输出(Ctrl+c)
  • 在Excel工作表中粘贴(Ctrl+V)
  • 选择数据所在的第一列
  • 在“数据”小插图中,单击“文本到列”
  • 选择分隔选项,单击下一步
  • 勾选“分隔符”中的空格框,单击下一步
  • 单击“完成”(结束)

你现在的输出应该是一种你可以在excel中轻松操作的形式。所以也许不是最花哨的选择,但如果你只是想用另一种方式探索你的数据,它确实起到了作用。
如果excel中的标签不是确切的,那是因为我在翻译我的西班牙语excel中的标签。

相关问题