是否可以使用双标头将data.frame / data.table写入.xlsx?我的数据包含数字,日期和字符串列。请在下面找一个例子。
example <- data.frame(Number=c(1:5),
Date=as.Date('1999-10-31','1999-10-31','1999-10-31','1999-10-31','1999-10-31','1999-10-31'),
String=LETTERS[1:5])
说,我想有一个双头,其中Number为“One”,Date为“Two”,String为“Three”。但显然我不能将它们放在第1行,因为它们的第二列名称是字符串,而一些列是日期/数字。
对此有什么想法吗?
@Edit:例如:
example <- data.frame(Number=c("One",as.character(1:5)),
Date=c("Two",'1999-10-31','1999-10-31','1999-10-31','1999-10-31','1999-10-31'),
String=c("Three",LETTERS[1:5]))
Number Date String
1 One Two Three
2 1 1999-10-31 A
3 2 1999-10-31 B
4 3 1999-10-31 C
5 4 1999-10-31 D
6 5 1999-10-31 E
但现在显然所有列都是字符串......我需要它们作为数字和特定字段的日期。感谢。
答案 0 :(得分:2)
例如,您可以使用XLConnect
包。以下是使用mtcars
数据的玩具示例。您只需要分两步执行:首先只编写colnames
(在data.frame
中)并从第2行开始像往常一样写入数据。
library(XLConnect)
header <- data.frame(t(colnames(mtcars)))
header
## X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
## 1 mpg cyl disp hp drat wt qsec vs am gear carb
writeWorksheetToFile(file = "/tmp/file.xlsx", data = header, sheet = "test",
startRow = 1, header = FALSE)
### Write the data as usual keeping the colnames
writeWorksheetToFile(file = "/tmp/file.xlsx", data = mtcars, sheet = "test",
startRow = 2)
使用您提供的数据,您可以这样:
header <- as.data.frame(rbind(c("One", "Two", "Three")))
example <- data.frame(Number=c(1:5),
Date=as.Date('1999-10-31','1999-10-31',
'1999-10-31','1999-10-31',
'1999-10-31','1999-10-31'),
String=LETTERS[1:5])
writeWorksheetToFile(file = "/tmp/file2.xlsx", data = header, sheet = "test",
startRow = 1, header = FALSE)
writeWorksheetToFile(file = "/tmp/file2.xlsx", data = example, sheet = "test",
startRow = 2)
答案 1 :(得分:1)
你可以&#34;覆盖&#34;像这样的write.csv()
函数
New_write.csv <- function(file,example)
{
Header1 <- paste(names(example),collapse=",")
Header2 <- paste(c("one","Two","Three"),collapse=",")
writeLines(paste(Header1,Header2,sep="\n"),file)
write.table(example, file, sep = ",", append = TRUE, col.names = FALSE,row.names=F)
}
然后正常地调用它:
New_write.csv("example.csv",example)