一次读取72个文件并从所有文件中获取数据

时间:2014-10-23 09:49:12

标签: r

我需要阅读72个文件,每个文件包含学生ID和其他无用信息。我只需要学生ID并将所有这些都放在一个数据框中

  

å文件< -list.files(图案= “年”)

     

al< - lapply(afile,readLines)

     

减去< -grep( 'ID [0-9] +',人)中

但它出现了所有数据,而不仅仅是id no。

数据样本:

  

“每月报告”

     

“XXXXX大学”

     

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

     

“| id | dep | scores |

     

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

     

“| id593 | 2 | 233 |

我需要将其更改为:

  

ID

     

id522

     

id533

     

id544   它结合了所有文件的数据

1 个答案:

答案 0 :(得分:1)

你可以尝试:

  library(stringr)
  id <- sapply(al, function(x) {na.omit(str_extract(x, "id[0-9]+"))})
  dat <- data.frame(id, stringsAsFactors=FALSE) 
  dat
  #    id
  #1 id593
  #2 id245

更新

如果您需要该行中的所有信息

   dat <-  read.table(text=sapply(al, function(x) 
                   {x1 <- gsub("[[:punct:]]+", "",
                          grep("id[0-9]", x, value=TRUE))
                          gsub("^ +| +$", "", x1)
                         }), sep="",header=FALSE)

   colnames(dat) <- c("id", "dep", "scores")
   dat
   #    id dep scores
   #1 id593   2    233
   #2 id245   2    233

我创建了两个文件year1.txtyear2.txt

  afile <- list.files(pattern="year")
  afile
  #[1] "year1.txt" "year2.txt"
  al <- lapply(afile, readLines)