【问题标题】:Import multiple CSV files, get variable names and import filename to new variable导入多个 CSV 文件,获取变量名并将文件名导入新变量
【发布时间】:2019-06-05 08:50:51
【问题描述】:

尝试将文件夹中的多个 CSV 文件导入 R。 CSV 文件都具有相同的结构,第一行要跳过,然后第二行是要导入的变量名称 - 之后数据开始。 我想在一个文件夹中导入所有 CSV 文件,从第一个文件的第二行获取变量名称(然后从以下 CSV 文件中跳过所有第 1+2 行)并另外添加另一列“ID” CSV 文件的文件名。

目前我有: (它会跳过所有文件的前两行并手动设置变量,但我想自动从第 2 行获取它们)

setwd("c:/datafolder/")
filenames <- Sys.glob("*.csv")
allData <- lapply(filenames, function(.file){

  dat<-read.csv(.file, header=F,skip=2)
  names(dat)<-c("variablename1",
                "variablename2",
                "variablename3"
  )

  dat$id<-as.character(.file)
  dat
})
combined_data <- do.call(rbind, allData)

【问题讨论】:

  • 你能展示一下你已经尝试过的东西吗?
  • 如果您还展示了预期输入和输出的示例,您的问题会更容易理解。
  • 用我当前的代码编辑了帖子

标签: r csv import


【解决方案1】:

我会试试这个:

inputfilename <- "filename"
df <- read.csv(inputfilename, header = F, stringsAsFactors = F, sep = ";")
df
       V1      V2      V3
1 bad row bad row bad row
2    Name     Age  Gender
3    John      12       M
4    Jane      20       F
names(df) <- df[2,]
df <- df[-c(1:2),]
df
  Name Age Gender
3 John  12      M
4 Jane  20      F
df$ID <- inputfilename
df <- df[,c(4,1:3)]
df
  ID        Name  Age     Gender
3  filename John  12      M
4  filename Jane  20      F

在此之后,您可以将不同的数据帧组合成 1。

【讨论】:

  • 谢谢!但这仅适用于一个文件,我无法弄清楚如何将其用于多个文件并获取一个文件的变量名。
  • 所有文件的名称是否相似?比如文件名1、文件名2等?
  • 我只想从一个文件夹导入*.csv,文件名构造为“ID”.csv
  • 那你只需要添加filenames &lt;- list.files() for(i in 1:length(filenames)) { inputfilename &lt;- filenames[i]
猜你喜欢
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多