[英]Export data from R to Excel
我正在編寫代碼以將數據庫從 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)
您可以在圖片上看到我從上面的代碼中得到的結果。 但是這個數字不能用於進行任何進一步的操作,例如與其他矩陣的加法。
有人遇到過這種問題嗎?
另一種選擇是openxlsx
。 它不依賴於java ,可以讀取、編輯和寫入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')
除了這兩個基本功能之外, openxlsx
還有許多其他用於操作Excel文件的功能。
例如,使用writeDataTable
函數,您可以在Excel文件中創建格式化表格。
最近用的xlsx包,效果不錯。
library(xlsx)
write.xlsx(x, file, sheetName="Sheet1")
其中 x 是一個 data.frame
writexl
,沒有Java要求:
# install.packages("writexl")
library(writexl)
tempfile <- write_xlsx(iris)
也可以使用readODS包。 當然它不會生成.xlsx
,但 Excel 也可以讀取 Open Document Spreadsheet (ODS) / LibreOffice 文件。
require(readODS)
tmp = file.path(tempdir(), 'iris.ods')
write_ods(iris, tmp)
如果我可以提供替代方案,您還可以將數據框保存在常規csv
文件中,然后使用 Excel 中的“獲取數據”功能導入數據框。 這對我來說就像一個魅力,你不必為 R 中的任何 excel 包而煩惱。
這是一種通過不同 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)))
因此 ids 1,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'))
我一直在嘗試不同的包,包括功能:
install.packages ("prettyR")
library (prettyR)
delimit.table (Corrvar,"Name the csv.csv")
## Corrvar
是我在縮放變量上運行回歸的輸出中的對象名稱。
但是,我為另一個分析的輸出(占用模型模型選擇輸出)嘗試了相同的代碼,但它不起作用。 經過多次嘗試和探索,我:
在“數據”小插圖中,單擊“文本到列”
選擇分隔選項,點擊下一步
勾選“分隔符”中的空格框,點擊下一步
點擊完成(結束)
您現在的輸出應該是您可以在 excel 中輕松操作的形式。 因此,這可能不是最好的選擇,但如果您只想以另一種方式探索數據,它就可以解決問題。
PS。 如果 excel 中的標簽不是確切的標簽,那是因為我從我的西班牙語 excel 中翻譯了標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.