10

MSWord 2010 ファイルを R に読み込むことは可能ですか? Windows 7 と Dell 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 に読み込むことができれば、それが最も効率的に編集および修正できるのではないかと考えました。

MSWordファイルをRに読み込むことができると思われる「package tm」は知っていますが、サードパーティのソフトウェアをインストールする必要があるように見えるため、使用について少し心配です。

ご提案ありがとうございます。

4

4 に答える 4

7

まず、Wordファイルはテキスト(プレーン、ASCIIテキスト)ファイルではないため、 readLines()は正しい解決策ではありません。

tmパッケージのWord関連関数はreadDOC()と呼ばれますが、この関数と必要なサードパーティツール(Antiword)はどちらも古いWordファイル(Word 2003まで)用であり、新しい.docxファイルを使用しても機能しません。

私が提案できる最善の方法は、 tmパッケージにもあるreadPDF()を試してみることです。注:ツールpdftotextがシステムにインストールされている必要があります。Linuxにとっては簡単で、Windowsについてはわかりません。または、PDFをプレーンなASCIIテキストファイル( Wordファイルではない)に変換するWindowsツールを見つけます(Windowsでメモ帳を使用して正しく開いて表示する必要があります)。次に、readLines()を再試行します。ただし、PDFファイルが古く、スキャナーからのものであることを考えると、テキストへの変換は難しい場合があります。

最後に、この場合、あなたが最初の決定をしなかったことに気づきましたが、他の人にとっては、WordとPDFは、解析したいデータを保存するための適切な形式ではありません。

于 2012-06-20T01:00:50.927 に答える
1

MSWord ファイルを R に読み込む方法はわかりませんが、内容を R が読み込める形式に変換しました。

  1. Acrobat X Pro で PDF を MSWord に変換しました

  2. 元のテーブルには、列を区切る実線の垂直線がありました。MSWord ファイルをテキスト ファイルに変換したときに、これらの縦線がデータの形式を乱していたことが判明しましたが、テキスト ファイルを作成する前に、MSWord ファイルから縦線を削除することができました。

  3. 手順 2 で縦線を削除した後、MSWord ファイルをテキスト ファイルに変換します。

  4. 結果として得られるテキスト ファイルには依然として大規模な編集が必要ですが、少なくともデータの大部分は R が読み取ることができる形式で存在し、すべてのデータを手動で pdf に再入力する必要がないため、何時間もの作業を節約できます。

于 2012-06-20T09:05:30.033 に答える
1

これは、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()) 
于 2016-11-24T22:23:33.677 に答える