将MSWord文件读入R中

Mar*_*ler 9 r ms-word

是否可以将MSWord 2010文件读入R?我有Windows 7和戴尔PC.

我正在使用这条线:

my.data <- readLines('c:/users/mark w miller/simple R programs/test_for_r.docx')
Run Code Online (Sandbox Code Playgroud)

尝试读取包含以下文本的MSWord文件:

A   20  1000    AA
B   30  1001    BB
C   10  1500    CC
Run Code Online (Sandbox Code Playgroud)

我收到一条警告信息:

警告消息:在readLines("c:/ users/mark w miller/simple R programs/test_for_r.docx")中:在'c:/ users/mark w miller/simple R programs/test_for_r.docx'上找到不完整的最终行

并且my.data似乎是胡言乱语:

# [1] "PK\003\004\024" "¤l"             "ÈFÃË‹Átí"
Run Code Online (Sandbox Code Playgroud)

我知道通过这个简单的例子,我可以轻松地将MSWord文件转换为其他格式.但是,我的实际数据文件包含几十年前输入的复杂表格,然后再扫描成pdf文档.原始纸质文档的年龄和原始文件中的不完善,打字和/或扫描过程导致一些字母和数字不是很清楚.到目前为止,将pdf文件转换为MSWord似乎是正确翻译表格中最成功的.将MSWord文件转换为Excel或富文本等并不是很成功.即使在转换为MSWord之后,生成的文件也非常复杂并且包含许多错误.我想如果我能将MSWord文件读入R中,这可能是编辑和纠正它们的最有效方法.

我知道'package tm',我想可以将MSWord文件读入R,但我有点担心使用它,因为它似乎需要安装第三方软件.

谢谢你的任何建议.

nei*_*fws 7

首先,readLines()不是正确的解决方案,因为Word文件不是文本(即普通的ASCII文本)文件.

tm包中与Word相关的函数称为readDOC(),但它和所需的第三方工具(Antiword)都适用于较旧的Word文件(最高为Word 2003),并且无法使用较新的.docx文件.

我能建议的最好的是你尝试在tm包中找到的readPDF().注意:它要求在您的系统上安装工具pdftotext.Linux易用,不懂Windows.或者,找到一个Windows工具,将PDF转换为普通的ASCII文本文件(不是 Word文件) - 它们应该在Windows上使用记事本打开并正确显示 - 然后再次尝试readLines().但是,鉴于您的PDF文件较旧且来自扫描仪,转换为文本可能很困难.

最后:我意识到你没有在这个例子中做出原始决定,但对于其他任何人 - Word和PDF不适合存储你想要解析的数据.

  • 我认为这是一个合理的答案,尽管我认为最后一句话很重要,我会把它放在第一位。 (2认同)
  • 我会将最后一句改为:"Word和PDF是_not_适合存储任何东西的格式.永远." 微软因发布无法读取较旧文件格式的Office版本而臭名昭着(Excel4.0,任何人?),而PDF则非常紧张.ASCII和epub(只是压缩的XML)是更好的选择. (2认同)

Ami*_*hli 7

如果它对其他人有帮助,https://cran.r-project.org/web/packages/readtext/vignettes/readtext_vignette.html,似乎有一个新的包专门用于读取文本数据,包括Word文件(也是新的.docx格式)。