读取.csv文件,将其转换并使用R将其另存为.xlsx

时间:2019-01-13 11:46:12

标签: r xlsx

我有一个充满.csv文件的文件夹,必须稍作更改,然后将其另存为xlsx文档。

因此,我创建了一个循环来执行此操作:

library(xlsx)
docs <- Sys.glob( "*.csv" )

for( i in docs )
{
  df <- read.csv(i)
  df2 <- select(df, X, Y)
  df3 <- mutate(df3, Z = (X - Y) / 3600)
  write.xlsx(df3, paste( "C:/users/Desktop/Files/", i), row.names = FALSE)
}

但是,当我执行此for循环时,会弹出以下错误消息:

  

createWorkbook(type = ext)中的错误:CSV格式未知

我忘记了什么吗?如果您能帮助我,我将不胜感激,因为我不知道还有什么要改变的...

1 个答案:

答案 0 :(得分:1)

软件包rio消除了xlsx文件的大部分麻烦。它也可以用于读入文件:

docs <- Sys.glob("*.csv")

for(i in docs) {
  df <- rio::import(i)
  df2 <- select(df, X, Y)
  df3 <- mutate(df3, Z = (X - Y) / 3600)
  rio::export(df3, paste0("C:/users/Desktop/Files/", i, ".xlsx"))
}

这应该在导入/导出部分上起作用。我不太确定的是您的Sys.glob,因为我以前从未使用过。我发现list.files具有非常简单而强大的语法...

更新

如果要摆脱.csv文件扩展名,可以改用以下文件:

for(i in docs) {
  df <- rio::import(i)
  df2 <- select(df, X, Y)
  df3 <- mutate(df3, Z = (X - Y) / 3600)
  fname <- gsub(".csv$", "", i)
  rio::export(df3, paste0("C:/users/Desktop/Files/", fname, ".xlsx"))
}