2016-12-20 4 views
0

Rでファイルをクリーニングするのに手助けが必要ですファイルをノーマライズしてクリーニングするR

これらは異なる人が作成したExcelファイルで、同じテキストが含まれているはずです。私の仕事は、テキストのスニペットを比較し、それらが一致していることを確認することです(時には人型、時には人がペーストをコピーする、それは混乱です)。

私の特に問題は、標準的な書式設定がなく、そのうちのいくつかがPDFから抽出されていることです。

あなたのアイデアを与えるために、テキストは次のようになります。

ファイルA:

「猿が食べる必要があります。

・バナナ、または

を・6バナナ。"

ファイルB:

"猿が食べる必要があります。

バナナ、または

5バナナ"

ファイルC:

"猿が食べる必要があります。・バナナ

を、または

・6バナナ"

これまでのところ、私は以下の機能の組み合わせを使用しましたが、結局私の比較はであり、偽です。

monkeyr$txtcp <- stri_enc_toascii(monkeyr$txtcp) 

monkeyr$txtcp <- removeNumbers(monkeyr$txtcp) 
#bad idea as I want to compare the number of bananas 

monkeyr$txtcp <- tolower(monkeyr$txtcp) 

monkeyr$txtcp <- stripWhitespace(monkeyr$txtcp) 

monkeyr$txtcp <- removePunctuation(monkeyr$txtcp) 

monkeyr$txtcp <- trimws(monkeyr$txtcp) 

monkeyr$txtcp <- stri_replace_all_charclass(monkeyr$txtcp, 
"\t", " ", merge = T) 

#This above was specially because I wanted to remove the "tab" in File 3. 
#Does not work. This is some sort of "invisible" tab that gets turned into 
#a series of ->->-> when saved as csv. 

追加情報:

これは、どのようにファイルCでExcelで剥離し、開かれた後、次のようになります。

Screenshot of "invisible" tabs, which turn into arrows

任意の提案は、何らかの形でテキストを正規化するには?

注意:Javaを使用するパッケージはありません。事前に

おかげ

EDIT

例入力:

monkeyr <- structure(list(id = c("MON1", "MON2", "MON3"), txtcp = c("The monkey must be fed a combination of:\r\n<U+F0B7>  Bananas, or\r\n<U+F0B7>  6 Bananas.", 
"The monkey must:\r\n· Be active\r\n· Be petted\r\n· Be inactive.", 
"The monkey must:\r\nbe tame\r\njump")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -3L), .Names = c("id", 
"txtcp")) 

予想される出力:

cleanmonkey <- structure(list(id = c("MON1", "MON2", "MON3"), txtcp = c("the monkey must be fed a combination of bananas or 6 bananas", 
"the monkey must be active be petted be inactive", "the monkey must be tame jump" 
)), .Names = c("id", "txtcp"), class = c("tbl_df", "tbl", "data.frame" 
), row.names = c(NA, -3L)) 
+0

再現可能な例と予想される出力を追加してください – Sotos

+0

こんにちはSotos、ご意見ありがとうございます。 Excelブックのコピーをリンクせずに再現可能な例を作成するにはどうすればよいですか?上に表示される文字は、Rやメモ帳++では目に見えないように見えます。どういうわけかファイルをリンクできますか? –

+0

[このQ&Aを見る](http://stackoverflow.com/questions/5963269) – Jaap

答えて

1

何もELEガント、しかしこれはどうですか?このコードは、ASCII以外の要素を置き換え、次に "\ r"と "\ n"を置き換え、最後に余分なスペースを消去します。

monkeyr$clean <- str_replace_all(string = monkeyr$txtcp, pattern = "<U.*>", replacement = "") 
monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "\\\r", replacement = "") 
monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "\\\n", replacement = "") 
monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "[[:punct:]]", replacement = "") 
monkeyr$clean <- str_replace_all(string = monkeyr$clean, pattern = "\\s{2}", replacement = "") 

monkeyr$clean 
[1] "The monkey must be fed a combination of Bananas or 6 Bananas" 
[2] "The monkey must Be active Be petted Be inactive"    
[3] "The monkey mustbe tamejump" 

「mustbe」と「tamejump」の組み合わせに注意する必要があります。

+0

ありがとうございました! –

関連する問題