【问题标题】:Read 72 files at once and grep data from all of them一次读取 72 个文件并从所有文件中 grep 数据
【发布时间】:2014-10-23 09:49:11
【问题描述】:

我需要阅读 72 个文件,每个文件都包含学生编号和其他无用信息。我只需要学生证并将它们全部放入一个数据框中

文件

al

但它包含所有数据,而不仅仅是 id 号。

数据样本:

“月度报告”

“XXXX大学”

"+--------+------+-----+"

"| id | dep | 分数|

"+-------+-----+------+

"| id593 | 2 | 233 |

我需要改成这样:

身份证

id522

id533

id544 结合所有文件的数据

【问题讨论】:

  • 你能展示一些示例数据吗?我猜student id 是您文件中的一列,并且只想提取该列。
  • 您应该在lapply 中使用grep。即lapply(al, function(x) grep('id[0-9]+', al)) 获取所有具有student ids 的行的索引。反正没有任何数据,也不好说。
  • 我刚刚添加了示例数据 =)

标签: r


【解决方案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)

【讨论】:

  • 我的 R 说我没有 stringr 包......除了......只是想知道......如果我需要显示每个学生的所有数据......像 id 和 dep......我可以使用 grep 吗?还是我还需要使用 str_extract?
  • @Emilia311 在这种情况下,您可以使用grep
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
相关资源
最近更新 更多