导入多个CSV文件,获取变量名并将文件名导入新变量

时间:2019-06-05 08:50:51

标签: r csv import

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

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

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)

1 个答案:

答案 0 :(得分:0)

我会尝试一下:

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。