2016-11-01 12 views
1

Rtmパッケージを使用してテキストで特定したパターンを使用して、txt(またはHTML)ドキュメントから日付を抽出します。私のPC上の新聞の記事はdata_X_txtとdata_X(HTML形式)というフォルダにあります。各フォルダには、1つのtxt文書またはhtml文書にすべての新聞記事を含む会社の名前を付けた文書が含まれています。私はこれらの文書をLexis NexisからHTML形式でダウンロードしました。txt/HTMLファイルから未知の日付を抽出するR

各ドキュメントについて、添付の記事からアップロード日を知りたいと思います。私は、UPDATE:という単語に続く各記事に対してUploaddateが与えられていることを確認しました。

だから私は私の問題 Extract unknown words from a recurrent pattern

に似ているこの質問を見つけましたしかし、私はいくつかの問題解決になっています。
まず、正規表現の式を使った後続の処理のために、単一の文書からRにデータを正しくアップロードする方法がわかりません。

第2に、サブ式を理解して適用することに問題があります。私は私の問題へのサブのパターン部分(私は仮定最初の部分)を適応困難を持っている

sub("^(?:https?:\\/\\/)?[^\\/]+\\/([^\\/]+).*$", "\\1", tmp[,5]) 

:私が見つけたこの式を、参照してください。 また、第2の部分が何を意味するのか分かりません。 3番目の部分については、これがテキストのソースであることを知っていますが、[、5]が何を意味するのか分かりません。

ここでフルのコード:

tmp <- read.csv("LaVanguardia_facebook_statuses.csv") 
sub("^(?:https?:\\/\\/)?[^\\/]+\\/([^\\/]+).*$", "\\1", tmp[,5]) 

も、私が使用してtxtファイル:Rの https://www.dropbox.com/s/e24ywni8z3s8wqk/SolarWorldAG_25.03.2008_1.HTML.txt?dl=0

私の知識が現在、テキストマイニングに特にスワールコースとhttps://rstudio-pubs-static.s3.amazonaws.com/31867_8236987cf0a8444e962ccd2aec46d9c3.html

+0

を単に私たちに期待される出力とあなたがSOで直接試したものと一緒に入力の抜粋を示してください。例えば。あなたのDropboxのリンクは機能していないので、ここでは良い練習とはみなされていません。 – nozzleman

答えて

0

テキストですあなたが必要とするのは日付だけですが、Rの正規表現能力はかなり役に立ちます。

regmatches/wのgregexprを試してみてください、あなたはを求め、具体的何を達成するために:

fileName <- "~/Downloads/SolarWorldAG_25.03.2008_1.HTML.txt" 
mytxt <- readChar(fileName, file.info(fileName)$size) 
regmatches(mytxt, regexec("UPDATE:",mytxt)) 

regmatches(mytxt, gregexpr(
"UPDATE: [A-Za-z]{0,10} ?[0-9]{1,2}\\. [A-Z]{1}[a-z|ä]{2,8} [0-9]{4}", 
mytxt)) 

それは言って、英語で:0〜10のオプションのセットが続き、スペースが続くリテラルUPDATE:を探しますオプションのスペース、1〜2桁の数字、期間(理由のために\\によってエスケープされる)大文字、英語アルファベットのすべての小文字、およびä、 2〜8桁の文字の後にスペースが続き、その後に4桁の数字が続きます。

あなたが得る:

[1] "UPDATE: 18. März 2008"  "UPDATE: 14. März 2008"  
[3] "UPDATE: 13. März 2008"  "UPDATE: 14. März 2008"  
[5] "UPDATE: 28. Februar 2008" "UPDATE: 20. Februar 2008" 
... 
[189] "UPDATE: 31. Dezember 2004"  "UPDATE: 3. Januar 2005"   
[191] "UPDATE: 9. Dezember 2004"  "UPDATE: 23. November 2004"  
+0

答えをありがとう。しかし、gregexpr()コードの説明で "2〜8文字のシーケンス"とは言いません。悲しいことに私は編集できません。なぜなら、私は6文字以上しか編集できないからです。 –

関連する問題