2016-07-22 11 views
-2

ファイルをnewdataread.csvを使用して読み取ると、非常に奇妙な問題が発生しました。列のR - 文字列が整数と見なされます

一つは、「サイト」であり、それは文字列でなければならない:

  • 私はそのような「www.google.com」などの値が含まれていることがわかり、私はビューを使用してデータフレームを見て、 "www.facebook.com"など
  • カラムのタイプがtypeof(newdata$Site)であることを確認すると、結果は「整数」になります。
  • table(newdata$Site)を使用して各文字列の出現頻度を確認し、このテーブルを.csvファイルに書き込むと、数値ごとに適切な頻度表が表示されます(数値がない名前の列サイト文字列(例:www.google.com)とvar1という1つの列と、頻度がFreqの1つの列)。

複数の値を1つにまとめた新しい列を作成しようとしましたが(例: "Google"に "www.google.com"と "www.google.com")、greplを使用しました1で.csv結果にそれを書いて...私はa = newdata[,"Site"]によって、この列のサブセットをしようとしたとき、私は aは型因子であることだ

... Rがない文字列として元の列を扱うことに気づきましたすべての値の長い行....

私は間違って何ですか?私はこれらのものの新しいもので、私は本当に何をすべきかわかりません...

ありがとう!!!

+0

すべての人にとって、単語の束ではなくテキストの書式を設定してみてください。そして、あなたの列が要素であることを確認するために 'str(newdata)'を見てから、因子について検索してください(最初の手順: '?factor') – Tensibai

+2

マニュアルを一読しましたか?おそらくそうではありません。誰もしない。彼らは最初にここに投稿します。 'help(read.csv)'です。具体的には、 'stringsAsFactors'引数です。 –

+0

Hey @RichardScriven - これはcsvからの読み込みに関係しているとは考えていませんでした...しかし、私はあなたの懸念を感謝します:) – user3017075

答えて

1

あなたは既にかなり掘ってしまっています。あなたはあなたのコラムSiteが要因であり、それがtypeof()の整数であることを知っています。データを読み込む際に因子としての文字列を符号化避けるため

、使用:

read.csv(..., stringsAsFactors = FALSE) 

要因は整数がそのレベルの位置を与える整数として格納されています。試してみてください:

x <- gl(3,2,labels=letters[1:3]) 
#[1] a a b b c c 
#Levels: a b c 

typeof(x) 
#[1] "integer" 

levels(x) 
#[1] "a" "b" "c" 

levels(x)[x] ## equivalent to "as.character(x)", but more efficient 
#[1] "a" "a" "b" "b" "c" "c" 
+0

そして、私たちは現場でのドキュメンテーションを持っているので、それにリンクしましょう(http://stackoverflow.com/documentation/r/1104/factors#t = 201607221527562701029&a =備考) – Benjamin

+0

リンクをコピーして貼り付けましたが、私はあなたにそれを依頼していませんでした。ちょうど補足としてそれを追加します。 :) – Benjamin

+0

ありがとう@ ZheyuanLi!解決策と教訓的な態度の両方のために! – user3017075

関連する問題