2013-10-16 197 views
19

我寫代碼於從R導出數據庫到Excel中,我一直在努力別人的代碼包括:將數據導出到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) 

enter image description here

你可以在圖片上看到我從上面的代碼得到的結果。但是這個數字不能用於進行任何進一步的操作,例如與其他矩陣相加。

有人遇到過這類問題嗎?

+1

如果你不發佈'dput(ALBERTA1)'或'dput(head(ALBERTA1))'的輸出,我們將無法提供幫助。會有太多的猜測。 –

+1

請注意,這顯然是對[this](http://stackoverflow.com/q/19385494/324364)問題的跟進。 – joran

+0

RGUI接口上的前6個數字如下:55.5486398,57.8471114,54.5190511,50.5751821,49.4739451,53.4697459。您可以檢查每個輸出是否有小數部分。但是,當我通過上面提供的代碼在Excel上傳輸相同的數字列表時,我得到以下不清晰的輸出形式:555​​.486.398.454.784,578.471.113.839.479,54.519.051.119.506,49.473.945.115.391, 534.697.459.336.592,505.751.821.039.884 ..等等當然難以管理 你可以看到555.486.398.454.784(在excel中)與55.5486398(R-gui接口)完全不同。 –

回答

9

WriteXLS函數從WriteXLS包可以寫入數據到Excel。

或者,write.xlsxxlsx包也將工作。

+5

'xlsx'需要Java。 'WriteXLS'需要Perl。如果由於某種原因R無法訪問(我無法輕鬆選擇在我的公司計算機上安裝什麼),那麼這些都不會起作用。 (我知道開發人員很方便依賴現有的Java和Perl庫;但是R不應該站在它自己的角度?) – StasK

+1

'writeXLS'不能處理字符中的換行符。 – Ruben

20

最近使用的xlsx包,效果很好。

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

其中x是一個data.frame

+3

'xlsx'需要Java。如果由於某種原因它不能被R(公司計算機上的奇怪設置)訪問,那麼這是行不通的。 – StasK

+0

將java的jre路徑添加到系統變量Path中,則R可以訪問Java功能。爲此,請轉到我的電腦屬性,然後選擇高級系統設置,然後選擇環境變量。將java路徑添加到「路徑」。 –

0

我一直在嘗試不同的封裝,包括功能:

install.packages ("prettyR") 

library (prettyR) 

delimit.table (Corrvar,"Name the csv.csv")## Corrvar是對象從輸出我有一個名字在縮放變量上運行迴歸。

但是,我試着從另一個分析(佔用模型模型選擇輸出)的輸出相同的代碼,並沒有奏效。和許多嘗試和探索後I:

  • 在Excel工作表複製的輸出從R(Ctrl鍵 + Ç
  • 我粘貼它(Ctrl鍵 + V
  • 選擇第一列的數據是
  • 在「數據」小插圖中,單擊「文本到列」

  • 選擇分隔符選項,單擊「分隔符」下一個

  • 蜱空間中,單擊旁邊

  • 點擊敲定(完)

現在你的輸出應該是這樣的形式,你可以在excel中操作簡單。所以也許不是最好的選擇,但它只是想以另一種方式探索你的數據。

PS。如果excel中的標籤不是確切的標籤,那是因爲我從西班牙文excel中翻譯了這些標籤。

3

writexl,沒有Java的要求:

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

另一種選擇是openxlsx -package。它不取決於,並且可以讀取,編輯和編寫Excel -files。從包的描述:

openxlsx簡化寫入和定型的Excel的過程來自R 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 -package具有許多其他功能,用於操縱Excel -files。

例如,使用writeDataTable功能,您可以在Excel文件中創建格式化表格。

+0

'openxlsx'依賴於Rtools,它需要安裝並添加到系統變量路徑中。對於公司計算機不理想。我使用這個,現在試圖找到替代品,因爲我需要製作我的代碼的便攜版本,而不需要安裝任何東西。 – Arani

+0

@Arani我非常懷疑這一點。我已經在Windows虛擬機上安裝了'openxlsx',而沒有安裝Rtools,並且它可以正常工作。 – Jaap

+0

在我的情況下,它除了'saveWorkbook'或'write.xlsx'之外什麼都做。爲此,它要求Rtools。神祕! – Arani