2015-03-25 5 views
5

Ich brauche einen Datenrahmen in R zu einer Excel-Tabelle zu exportieren, die über getan werden können:Export von Daten in bestimmte Zellen in Excel-Blatt

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

Meine exportierten Daten werden dann Anfang in Zelle eingefügt werden „A1 "der Excel-Tabelle. Ich kann append=TRUE auch so einstellen, dass die Daten am Ende des Blattes hinzugefügt werden.

Gibt es eine Möglichkeit, es in eine spezifische Zelle zu setzen? Ich muss den Datenrahmen zu einem Bereich exportieren, der an Zelle C10 beginnt. Ist das möglich?

Update: Das Blatt enthält Daten in Zeilen 1-9 sowie Spalten A-B. Daher ist es nicht möglich, dem Datenrahmen einfach leere Zellen hinzuzufügen und sie in das Excel-Blatt einzufügen, da diese leeren Zellen die Daten löschen würden.

Antwort

1

Sie können die leeren Zellen mit leeren Daten füllen:

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) 

Oder, wenn Sie die Originaldaten behalten möchten:

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

Ja, dieser Code würde die ursprünglichen Daten löschen. In diesem Fall müssten Sie anstelle der Erstellung leerer Spalten und Zeilen zuerst die Originaldaten lesen und dann diese an die generierten neuen Daten binden. – Molx

+0

Ich dachte schon so. Es ist eine Lösung, aber keine sehr nette. Gibt es einen leichteren Weg? – Dom

+0

@Dom Es hätte vielleicht Erwähnung gezeigt, im OP zu erwähnen, dass eine solche Antwort Ihnen * nicht * entsprechen würde. – pnuts

5

Sie es XLConnect mit dem Paket tun.

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)