【问题标题】:Importing multiple .csv file into R by names of file [duplicate]按文件名将多个.csv文件导入R [重复]
【发布时间】:2014-07-20 00:47:47
【问题描述】:

我有一个文件夹,其中包含 332 个 .csv 文件,从 001.csv 到 332.csv。它们具有相同的标题。 如果我想从文件中计算一个对象的平均值(它的名称是从 a.csv 到 b.csv)。如何将文件 a,a+1,a+2,...b 中的数据合并到数据框中? 示例:输入 5:130; 流程:从 005.csv、006.csv、007.csv、...、130.csv 文件中读取数据,然后将它们合并到一个数据框中。

【问题讨论】:

  • 我认为问题在stackoverflow.com/questions/11433432/…之前已经回答了
  • 数据框是什么意思?简单地读取 x csv 文件并使用 cbind() 加入它们是否足够(并且可能)?如果是这样,您可以编写一个简单的循环。
  • 您可以将每个文件导入到array 的第三维并从那里开始。
  • 在我看来,回答这个问题的另一个问题没有完整的答案。因此,我认为将此问题标记为重复是不正确的。

标签: r csv


【解决方案1】:

假设您将所有.csv 文件放在一个文件夹中,以下函数将为您提供所需的内容:

# defining the function
merged <- function(id = 1:332) {
  df <- data.frame()
  for(i in 1:length(id)){
    add <- read.csv(as.character(paste0(sprintf("%03s",id[i]),".csv")))
    df <- rbind(df,add)
  }
  colnames(df) <- c(..specify the colnames in here..)
  assign("dat", df, envir = .GlobalEnv)
}

# getting your merged df
merged(5:130)

合并的数据框现在位于数据框dat

【讨论】:

  • 出了点问题。实际上, paste0(sprintf("%03s",id[i]),".csv") 只是返回“id[i].csv”。例如 paste0(sprintf("%03s",1),".csv") 返回“ 1.csv”
  • 这很奇怪。我在可能是同一组csv 文件(来自 Coursera 课程“数据分析计算”/“R 编程”)上对此进行了测试,它运行良好。要使此功能起作用,您必须将工作目录设置为所有csv 文件所在的目录。之后就可以使用该功能了。
猜你喜欢
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 2017-04-21
相关资源
最近更新 更多