【问题标题】:For R: How to exclude some data files based on file language对于 R:如何根据文件语言排除一些数据文件
【发布时间】:2019-01-19 19:01:04
【问题描述】:

我对 R 比较陌生(在法学院,所以这对我来说都是全新的),所以如果措辞不当,我深表歉意。 我有一系列大约 1500 个文档,我将它们导入 R 以便稍后进行分类和分析。我需要做的第一件事是排除所有用法语编写的文档,这些文档在 title/doc.info 中标有“FR”。我很好奇在导入文件之前我可以使用什么样的代码来排除它,以便在分析任何内容之前拥有一个干净的数据集(因为它显然会使情绪分析等过程变得一团糟)。 感谢您提供任何帮助(即使该帮助正在解释如何更好地谈论编码)。 亲切的问候!

编辑 1 我正在使用的代码是 readtext(folder),您可以在下面看到: 文件夹

submissions_text<-submissions$text

submission_number<- numeric()
submission_person<- factor()
submission_code<- factor()
submission_language<-factor()
submission_location<-factor()

for (submission_name in submissions$doc_id) {
  submission_name<-gsub(".txt","",submission_name)
  number<-as.numeric(strsplit(submission_name, "_|-")[[1]][1])
  submission_number<-c(submission_number,number)
  person<-strsplit(submission_name, "_")[[1]][2]
  submission_person<-c(submission_person, person)
  code<-strsplit(submission_name, "_")[[1]][3]
  submission_code<-c(submission_code, code)
  lang<-strsplit(submission_name, "_")[[1]][4]
  submission_language<-c(submission_language, lang)
  location<-strsplit(submission_name, "_")[[1]][5]
  submission_location<-c(submission_location, location)
}

submissions<-cbind(submissions,submission_number)
submissions<-cbind(submissions,submission_person)
submissions<-cbind(submissions,submission_code)
submissions<-cbind(submissions,submission_language)
submissions<-cbind(submissions,submission_location)


submissions<-submissions[order(submissions$submission_number, decreasing = FALSE),]

这只是我的代码的组织方面。我希望在此之前排除所有法国数据(但如果之后出现,我也会对此感到非常满意)。

【问题讨论】:

  • 这是一个非常宽泛的问题 - 可能过于宽泛,无法在这里轻松回答。您是否尝试过编写任何代码,例如仅导入所有文档? SO 不是代码编写服务,因此最好展示一些尝试(即使您对此没有信心),然后人们可以为您指出更好的方向。
  • 当然。我可以向你展示我目前拥有的东西。文件夹% select(order, doc_id:text) #这将是对于第一个数字,排序 submit_number
  • 您可以将其作为对您问题的编辑,以便其他人可以尝试您的代码(尽管看起来您已经有了一个很好的答案!)。请记住,如果您包含 minimal example,您将获得更好的帮助。
  • 我的错。再一次,对我来说都是新的。感谢您的耐心等待!

标签: r


【解决方案1】:

您所追求的功能可以在list.files() 函数中找到。可以在here 找到文档。

简而言之,您的代码最终可能看起来像这样:

setwd("c:/path/to/your/data/here")
files <- list.files()
non_french_files <- files[!grepl("FR", files)]
lapply(non_french_files, function(x) {
  f <- read.csv(x)
  #do stuff with f
}]

注意 - 您可以直接利用 `list.files() 中的 pattern 参数,但如果您想对法语文件执行其他操作,我选择分两步执行此操作。这也简化了每一行代码的作用......

...祝你好运,欢迎来到 R!

【讨论】:

  • 谢谢!我要试试这个。到目前为止,我一直在使用 readtext(可能应该提到这一点,抱歉),但我会尝试这个 list.files。再次感谢!
  • 您还可以在list.files() 中指定正则表达式模式,并可能跳过必须分配non_french_files()
【解决方案2】:

这里有一个类似于@Chase 的替代方案:

#set wd
files<-list.files()[!grepl("FR",list.files())]
lapply(files,function(x) read.csv(x)) #reads all at once, might want to save each

【讨论】:

  • 感谢您的建议,你们太棒了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多