3

会話のトランスクリプトを R に読み込めるように取り組んでいます。ただし、カーリー クォート en や em ダッシュなどの特殊文字で衝突します。通常、Microsoft 製品では、これらの特殊文字を最初に に置き換えreplaceます。通常、私は特殊文字をプレーン テキストに置き換えますが、場合によっては他の文字に置き換えたい場合があります (つまり、「 」を { } に置き換えます)。これは面倒で、必ずしも完全ではありません。トランスクリプトをそのまま R に読み込み、エンコーディングを使用してエンコーディングを認識可能な Unicode 形式に切り替えることができれば、トランスクリプトをgsub取り出してプレーン テキスト バージョンに置き換えることができます。ただし、ファイルは理解できない方法で読み込まれます。私のデータがどのように見えるかのxlsxは次のとおりです。

http://dl.dropbox.com/u/61803503/test.xlsx

これは.xlsxファイルの内容です

text                              num
“ ” curly quotes                    1
en dash (–) and the em dash (—)     2
‘ ’ curly apostrophe-ugg            3
…  ellipsis are uck in R            4

これは、次のように R に読み込むことができます。

URL <- "http://dl.dropbox.com/u/61803503/test.xlsx"
library(gdata) 
z <- read.xls(URL, stringsAsFactors = FALSE) 

結果は次のとおりです。

                                 text num
1                “ †curly quotes    1
2 en dash (–) and the em dash (—)   2
3        ‘ ’ curly apostrophe-ugg   3
4          …  ellipsis are uck in R   4

だから私はEncodingUnicodeに変換するために使用しようとしました:

iconv(z[, 1], "latin1", "UTF-8")

これは与える:

[1] "â\u0080\u009c â\u0080\u009d curly quotes"                "en dash (â\u0080\u0093) and the em dash (â\u0080\u0094)"
[3] "â\u0080\u0098 â\u0080\u0099 curly apostrophe-ugg"        "â\u0080¦  ellipsis are uck in R"     

これにより、gsubing の有用性が低下します。

これらの特殊文字を区別可能な Unicode に変換して適切に gsub できるようにするにはどうすればよいですか? より明確にするために、私はz[1, 1]読んでみたいと思っていました:

\u201C 2\u01D curly quotes

私の望む結果をさらに明確にするために、ウィキペディアのようなページからテーブルをウェブスクレイピングします: http://en.wikipedia.org/wiki/Quotation_mark_glyphsとユニコード参照チャートを使用して文字を適切に置き換えます. そのため、文字をユニコードまたは体系的に調べて文字を置き換えることができる標準形式にする必要があります。多分それはすでにあり、私はそれを逃しています。

PSファイルを.csvまたはプレーンテキストとして保存しません。これは、特殊文字がに置き換えられている?ためです。より良い代替手段がある場合read.xls は、ファイルを読み取る特定の方法に I'm not attached を使用します(つまり) read.xls.

4

2 に答える 2

9

おそらくこれが役立つでしょう(明日Windowsマシンにアクセスできるので、SOが最初に答えを出さなければ、その時点でもっと遊ぶことができます)。

Linux システムで、次の操作を行うと、次のようになります。

iconv(z$text, "", "cp1252")

私は得る:

[1] "\x93 \x94 curly quotes"                "en dash (\x96) and the em dash (\x97)"
[3] "\x91 \x92 curly apostrophe-ugg"        "\x85  ellipsis are uck in R"  

これは UTF ではありませんが、(私は信じています) ISO hex エンティティです。それでも、ここまでできれば、思い通りに使えるはずgsubです。

変換については、このページ(特に予約セクション) を参照してください。

アップデート

ASCII などのこれらの文字を含まないエンコーディングに変換して、 に設定することもできsubます"byte"。私のマシンでは、次のようになります。

iconv(z$text, "", "ASCII", "byte")
# [1] "<e2><80><9c> <e2><80><9d> curly quotes"               
# [2] "en dash (<e2><80><93>) and the em dash (<e2><80><94>)"
# [3] "<e2><80><98> <e2><80><99> curly apostrophe-ugg"       
# [4] "<e2><80><a6>  ellipsis are uck in R"   

見苦しいですUTF-8(e2, 80, 9c)が、右中括弧です (各文字は、角括弧で囲まれた 3 つの値のセットだと思います)。句読点名で検索できるサイトで変換を見つけることができます。

于 2012-08-15T17:55:09.340 に答える
1

試す

> iconv(z, "UTF-8", "UTF-8") 
[1] "c(\"“—” curly quotes\", \"en dash (–) and the em dash (—)\", \"‘—’ curly apostrophe-ugg\", \"…  ellipsis are uck in R\")"
[2] "c(1, 2, 3, 4)"  

windows は、エンコーディングに関して非常に問題があります。おそらく、http: //www.vmware.com/products/player/ を見て、 Linux を実行できます。

これは私のWindowsボックスで動作します。最初の入力はあなたが持っていた通りでした。また違った体験ができるかもしれません。

于 2012-08-15T16:57:55.760 に答える