从文件名中提取日期并将其添加到data.frame

时间:2014-10-24 08:49:54

标签: r date dataframe

我将12个不同的txt文件合并到一个数据框中,如下所示:

每个文件包含不同数量的数据,文件名是带有日期的名称,例如“学生 - 得分 - 2010-10.txt”。

每个文件代表一个月。

如何将日期添加回每行?

   id  dep  score
id511   10     34
id512   10     32
id512   10     34

我需要将日期添加回每行

   id  dep  score      date
id511   10     34   2010-10
id511   10     34   2010-10
id511   10     34   2010-10
id511   10     34   2010-11
id511   10     34   2010-11
id511   10     34   2010-12
id511   10     34    2011-1

我补了约会。这不是真正的数据

orignial data

每月报告“

“XXXXX大学”

“+ -------- + ------ + ----- +”

“| id | dep | scores |

“+ ------- + ----- + + ------

“| id593 | 2 | 233 |

1 个答案:

答案 0 :(得分:0)

你可以尝试:

 files <- list.files(pattern="^Student")
  files
 #[1] "Student-Score-2010-10.txt" "Student-Score-2010-11.txt"

 dat<- do.call(rbind,lapply(files, function(x) {
           al <- readLines(x)
           al2 <- grep("id[0-9]", al, value=TRUE)
           al3 <- gsub("^ +| +$", "", gsub("[[:punct:]]+", "", al2))
           al4 <-read.table(text=al3, header=FALSE, sep="", stringsAsFactors=FALSE)
           colnames(al4) <- c("id", "dep", "scores")
           transform(al4, date=gsub("[[:alpha:]]+\\-[[:alpha:]]+\\-(.*)\\.txt",
                                          "\\1",x))}))

  dat
  #   id dep scores    date
  #1 id592   2    235 2010-10
  #2 id593   2    233 2010-11