子集问题

时间:2014-10-14 16:32:31

标签: r file csv import

我正在尝试将多个csv文件加载到R中,并将它们全部合并到一个大型数据框中。我正在阅读的文件的标题是数据的年份,例如BirthWeight1999.csv,BirthWeight2000.csv,BirthWeight2001.csv。我想要做的是为每个csv文件创建一个新列,以给出数据来源的年份。例如,该文件包含列,MotherWeight,Alcohol,BabyWeight,我想要包含一个名为Year的新列,它具有文件名中的值。因此,如果文件是BirthWeight1999,则Year列应该包含1999.我很难找到如何执行此操作。我有阅读的文件...

filenames = list.files(dir())
do.call("rbind", lapply(filenames, read.csv, header = TRUE)

感谢任何帮助。

谢谢:)

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你可以试试:

    #examples of your filenames
    filenames<-paste(sep="","BirthWeight",1999:2014,".csv")
    #take the year
    years<-as.numeric(substring(filenames,12,15))
    #call read.csv to each filename and add the column year
    do.call(rbind,mapply(function(x,y) {ret<-read.csv(x);ret$year<-y;ret},filenames,years,SIMPLIFY=FALSE))