【问题标题】:Extract specific cells from multiple csv files and copy them into a new excel file从多个 csv 文件中提取特定单元格并将它们复制到新的 excel 文件中
【发布时间】:2021-04-15 09:40:33
【问题描述】:

我需要从位于不同文件夹中的三个不同 csv 文件(“Multi_year_summary.csv”)中提取 C6:E6 范围内的单元格(代码范围为 [4, 3:5]),然后将它们复制到一个新的excel文件。所有 csv 文件都具有相同的名称(如上所示)。我尝试如下:

library("xlsx")

zz <- dir("C:/Users/feder/Documents/Simulations_DNDC")

aa <- list.files("C:/Users/feder/Documents/Simulations_DNDC/Try_1", pattern = "Multi_year_summary.csv", 
                 full.names = T, recursive = T, include.dirs = T)
bb <- lapply(aa, read.csv2, sep = ",", header = F)

for (i in 1:length(bb)) {
  xx <- bb[[i]][4, 3:5]
  qq <- rbind(xx)
  jj <- write.xlsx(qq, "C:/Users/feder/Documents/Simulations_DNDC/Try_1/Results.xlsx",
                   sheetName="Tabelle1",col.names = FALSE, row.names = FALSE)
}

代码已执行,但仅从一个文件中提取单元格,因此在 Results.xlsx 中我只有一行而不是三行。也许问题是从xx &lt;- bb[[i]][4, 3:5] 开始的,因为如果我执行xx,控制台会返回“1 个变量,共 3 个变量”而不是 3 个对象。

任何帮助将不胜感激。

【问题讨论】:

    标签: r


    【解决方案1】:

    读取csv后,您可以在同一个lapply循环中提取所需的相关数据,将它们组合成一个数据帧并以xlsx格式写入。

    result <- do.call(rbind, lapply(aa, function(x) read.csv(x, header = FALSE)[4, 3:5]))
    
    write.xlsx(result, 
              "C:/Users/feder/Documents/Simulations_DNDC/Try_1/Results.xlsx",
               sheetName="Tabelle1",col.names = FALSE, row.names = FALSE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多