【问题标题】:Combine csv files of different formats and make into one excel with different sheets合并不同格式的csv文件,用不同的sheet做成一个excel
【发布时间】:2016-06-18 07:08:50
【问题描述】:

我有四个不同格式和变量的 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 文件中的变量名称相同

【问题讨论】:

  • 问题来自read.csv,它将在文件头内部使用make.names,以在R中为变量提供适合的名称。您可以尝试在read.csv的调用中指定参数check.names=FALSE

标签: r excel export


【解决方案1】:

这个问题是由于 read.csv 更改了标题的名称。如果我们将read.csvheader=T 一起使用,则gi/joe 之类的列标题将转换为gi.joe。所以需要再次转换标题名称:

names(df) <- gsub("\\.","/",names(df))

或者如果可以接受的话,就干脆做(将标题作为数据读取):

addDataFrame(read.csv(item,header=F), sheet,row.names=FALSE)

在单独的注释中,gi/joe 之类的名称不允许作为 Excel 工作表名称。现在要验证 excel 中的限制,请打开 excel 并尝试将工作表命名为 hi/5。一个人应该得到错误说The sheet name contains invalid characters: : \ / ? * [ ]. [我在mac excel 15.19.1上测试这个]

【讨论】:

  • 您好,先生,感谢您的建议,但工作表名称没有问题,我面临变量名称的问题
  • 请您告诉工作表的名称,您遇到问题了吗?
  • 工作表名称是 data1, data2, data3, data4 这些是 4 个 csv 文件中的 4 个工作表,但第一个文件 data1 工作表变量名与导出到 excel 后发生的情况不同
  • 使用你的代码有问题所有数值变量都转换成字符格式
  • 哪一个?通过说header=F 我的意思是所有数据都不是标题。因此根据第一行(即文本)的所有数据都将转换为文本。更改为字符串应该没有问题,因为 excel 中没有数据类型。但是,如果不是这种情况,请使用 sheetData&lt;-read.csv(item) names(sheetData) &lt;- gsub("\\.","/",names(sheetData)) addDataFrame(sheetData,sheet,row.names=FALSE) 这将以正确的格式读取数据,并且只对列标题进行操作。
猜你喜欢
  • 2022-08-09
  • 2018-08-07
  • 2019-08-28
  • 2019-04-03
  • 1970-01-01
  • 2022-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多