2015-03-25 21 views
5

ho bisogno di esportare un frame di dati in R ad un foglio di Excel, che può essere fatto tramite:dati Esportazione in cellule specifiche in foglio di Excel

require("xlsx") 
write.xlsx(x, file, sheetName="Sheet1", col.names=TRUE, 
    row.names=TRUE, append=FALSE, showNA=TRUE) 

miei dati esportati saranno poi incollate inizio nella cella "A1 "del foglio Excel. Posso anche impostare append=TRUE in modo che i dati vengano aggiunti alla fine del foglio.

Esiste la possibilità di inserirlo in una cella specifica ? Devo esportare il frame di dati su un intervallo che inizia dalla cella C10. È possibile?

Aggiornamento: Il foglio contiene dati in righe 1-9 nonché colonne A-B. Pertanto non è possibile aggiungere semplicemente celle vuote al frame dati e incollarlo nel foglio excel, perché quelle celle vuote cancellerebbero i dati.

risposta

1

È possibile riempire le celle vuote con i dati vuoto:

data <- matrix(1:100, ncol=5) 
col.offset <- 2 
row.offset <- 9 
emptycols <- matrix("", ncol=col.offset, nrow=nrow(data)) 
data <- cbind(emptycols, data) 
emptyrows <- matrix("", nrow=row.offset, ncol=ncol(data)) 
data <- rbind(emptyrows, data) 
write.table(data, "test.csv", row.names=FALSE, col.names=FALSE) 

O, se si desidera mantenere i dati originari:

data <- matrix(1:100, ncol=5) 
col.offset <- 2 
row.offset <- 9 
orig.data <- as.matrix(read.csv("test.csv", header=FALSE, stringsAsFactors=FALSE)) 
orig.cols <- orig.data[1:nrow(data), 1:col.offset] 
data <- cbind(orig.cols, data) 
orig.rows <- orig.data[1:row.offset, 1:ncol(data)] 
data <- rbind(orig.rows, data) 
+1

Sì, questo codice cancellerebbe i dati originali. In quel caso invece di creare colonne e righe vuote dovresti prima leggere i dati originali, e poi sarebbe possibile associarli ai nuovi dati generati. – Molx

+0

Ho già pensato a questo modo. È una soluzione, ma non molto bella. C'è un modo più semplice? – Dom

+0

@Dom Potrebbe essere opportuno prendere in considerazione di menzionare nell'OP che tale risposta * non * si adatta a te. – pnuts

5

si può fare con il pacchetto XLConnect.

library(XLConnect) 
wb <- loadWorkbook("File_result.xlsx"), create = TRUE) 
createSheet(wb, name = "Sheet1") 

# here, you can set the startRow and startCol. Col A = 1, B = 2,... 
writeWorksheet(wb,x,"Sheet1",startRow = 10, startCol = 3, header = TRUE) 

# automatically adjust column width 
setColumnWidth(wb, sheet = "Sheet1", column = 3:4, width = -1) 
saveWorkbook(wb) 
Problemi correlati