2017-06-30 3 views
-1

これは、部分的には、ヨーロッパのいわゆる方法でファイルを読むことに関連しています。詳細はHow to read in numbers with a comma as decimal separator?です。私は"Invoice","1324","Name","John","Age","10","Height","143,5","Products","1;2;3;4","ProductIDs","01;02;03;04"のような行を持つデータを持っています。カンマはフィールド値のセパレータとして機能し、二重引用符で区切られたフィールド値の中で、カンマは小数点記号として機能します。R:コンマを12区切り記号とフィールド区切り記号として読み取るにはどうすればいいですか? "fread 'dec'と 'sep'の2つの引数は等しい( '、')。"

セミコロンは他のセパレータとしても機能しますが、ここではこの観測を除外し、別の場所で異なる意味を持つカンマでファイルを最初に正しく読み込むことに集中できます。

Rの小数点区切り記号とフィールド区切り記号としてコンマで数字を読み取るにはどうすればよいですか? 。

+0

あなたの例では二重引用符も引用符で囲まれたコンマもありません。 –

+0

@EricWattは143.5から143,5を修正しました(私の意図したとおりです)、通知をいただきありがとうございます。二重引用符で、私はそこに書かれた引用符 "..."を意味します。 – hhh

+0

'sep ="、 "'(カンマとスペース)を使ってフィールドを読むのと同じ意味ですか? – Suren

答えて

1

あなたがファイルを読んでいる方法に応じdecパラメータを使用して行うことが可能かもしれないがここで私はdata.tableを使用して、それを行うだろうかです:

この程度
dat <- fread('"Name", "Age" 
       "Joe", "1,2"') 
dat[, Age := as.numeric(gsub(",", ".", Age))] 

# Name Age 
# 1: Joe 1.2 
+0

Heightフィールドの値と同じように+ 1が機能するとは思っていますが、カラム値のウェブアドレス(ドットは小数点の区切りを指定していません)のような場合は機能しません。より一般的なケースでは元々どのように値を読み込みましたか? 'fread(data.csv、colClasses = list(character = 1:31))'? – hhh

+1

freadは通常、自分自身でかなり良い仕事をしているので、fread(data.csv)から始めます。それはそれ自身の文字に "1,2"を変換しました。場合によっては問題が発生することもあるので、必要に応じて列クラスを指定できます。 ウェブアドレスの場合は、それを文字のままにして、その列に何もしないでください。 –

+0

私はすべてのことを文字として読んで、後でこのようなことを修正するという解決に傾いています。助けてくれてありがとう。私は誰かがもっと賢い選択肢を思いつくまでこれを受け入れる。 – hhh

0

どのように?

read.table("file.name", sep=",", quote = "\"", dec=",") 
+0

私はfreadでこれを試してみると、まだfread 'dec'と 'sep'の2つの引数は等しい( '、')です。 data.tableは動作しますが、 'library(data.table); fread( "file.name"、...) 'ではありません。 – hhh

+0

私は実際に 'data.table'のタグを見ませんでした。謝罪。 data.tableを使うと、言及されているのと同じように、 'fread(" file.name ")'だけを使ってくれました。 – Suren

関連する問題