读取 .csv 文件,转换它们并使用 R 将它们保存为 .xlsx

Reading .csv files, converting them and saving them as .xlsx using R

我有一个装满 .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循环时,弹出如下错误信息:

Error in createWorkbook(type = ext) : Unknown format csv

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

软件包 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"))
}

这应该适用于 import/export 部分。我不太确定的是您的 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"))
}