是否可以将MSWord 2010文件读入R?我有Windows 7和戴尔PC。
我正在使用该行:
my.data <- readLines('c:/users/mark w miller/simple R programs/test_for_r.docx')
尝试读取包含以下文本的MSWord文件:
A 20 1000 AA
B 30 1001 BB
C 10 1500 CC
我收到一条警告信息:
警告讯息: 在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í"
我知道通过这个简单的示例,我可以轻松地将MSWord文件转换为其他格式。但是,我的实际数据文件包含几十年前输入的复杂表格,然后再扫描成pdf文档。原始纸质文档的年龄和原始文件中的不完善,打字和/或扫描过程导致一些字母和数字不是很清楚。到目前为止,将pdf文件转换为MSWord似乎是正确翻译表格中最成功的。将MSWord文件转换为Excel或富文本等并不是很成功。即使在转换为MSWord之后,生成的文件也非常复杂并且包含许多错误。我想如果我能将MSWord文件读入R中,这可能是编辑和纠正它们的最有效方法。
我知道'package tm',我想可以将MSWord文件读入R,但我有点担心使用它,因为它似乎需要安装第三方软件。
感谢您提出任何建议。
答案 0 :(得分:6)
首先, readLines()不是正确的解决方案,因为Word文件不是文本(即普通的ASCII文本)文件。
tm 包中与Word相关的函数称为 readDOC(),但它和所需的第三方工具(Antiword)都适用于较旧的Word文件(直到Word 2003)并且无法使用较新的.docx文件。
我能建议的最好的是你尝试 readPDF(),也可以在 tm 包中找到。注意:它要求在您的系统上安装 pdftotext 工具。 Linux易用,不懂Windows。或者,找到一个Windows工具,将PDF转换为普通的ASCII文本文件(不 Word文件) - 它们应该在Windows上使用记事本打开并正确显示 - 然后尝试 readLines()再次。但是,鉴于您的PDF文件较旧且来自扫描仪,转换为文本可能很困难。
最后:我意识到你没有在这个例子中做出原始决定,但对于其他任何人 - Word和PDF不适合存储你想要解析的数据。
答案 1 :(得分:2)
如果https://cran.r-project.org/web/packages/readtext/vignettes/readtext_vignette.html对其他人有帮助,则似乎有一个专门用于读取文本数据的新程序包,包括Word文件(也是新的.docx
格式)。
答案 2 :(得分:1)
我还没弄明白如何将MSWord文件读入R,但我已将内容转换为R可以读取的格式。
我使用Acrobat X Pro将pdf转换为MSWord
原始表格具有分隔列的实线垂直线条。事实证明,当我将MSWord文件转换为文本文件时,这些垂直线会破坏数据的格式,但我可以在创建文本文件之前从MSWord文件中删除这些行。
在步骤2中删除垂直线后,将MSWord文件转换为文本文件。
生成的文本文件仍然需要大量编辑,但至少数据主要以R可以读取的格式存在,我不必手动重新输入pdf中的所有数据,节省了数小时的工作量
答案 3 :(得分:0)
您可以非常轻松地使用RDCOMClient执行此操作。 这样说,有些字符无法正确读取。
require(RDCOMClient)
# Create the connection
wordApp <- COMCreate("Word.Application")
# Let's set visible to true so you can see it run
wordApp[["Visible"]] <- TRUE
# Define the file we want to open
wordFileName <- "c:/path/to/word/doc.docx"
# Open the file
doc <- wordApp[["Documents"]]$Open(wordFileName)
# Print the text
print(doc$range()$text())