我有四个不同格式和变量的csv文件,使用下面的代码将这4个CSV文件合并到一个excel文件中
library(rJava)
library(xlsx)
rm(list = ls())
# getting the path of all reports (they are in csv format)
files <- list.files(pattern = "\\.csv$")
# creating work book
wb <- createWorkbook()
# going through each csv file
for (item in files)
{
# create a sheet in the workbook
sheet <- createSheet(wb, sheetName=strsplit(item,"[.]")[[1]][1])
# add the data to the new sheet
addDataFrame(read.csv(item), sheet,row.names=FALSE)
}
# saving the workbook
saveWorkbook(wb, "crosstabs of data.xlsx")
在csv文件中,一个表的变量名是source / Medium但它在输出excel文件中出现为Source ... Medium, %New Sessions变量显示为X..New.Sessions 和所有变量分隔空间占用。在输出excel文件中 如何克服这个问题我需要CSV文件中的变量名称与输出Excel文件中的变量名称相同
答案 0 :(得分:0)
此问题是由于read.csv更改了标头名称。如果我们使用gi/joe
进行gi.joe
,read.csv
之类的列标题将在header=T
中转换。因此,需要使用以下方法再次转换标题名称:
names(df) <- gsub("\\.","/",names(df))
OR如果可以接受,只需(将标题作为数据读取):
addDataFrame(read.csv(item,header=F), sheet,row.names=FALSE)
单独注释看起来像gi/joe
这样的名称不允许作为Excel工作表名称。现在验证excel end open excel中的限制并尝试命名工作表hi/5
。一个人应该得到错误The sheet name contains invalid characters: : \ / ? * [ ].
[我在mac excel 15.19.1上测试这个]