2017-04-05 17 views
2

readrパッケージを使用している列を読み込み中に正しい種類に解析したいとします。"cols()"と "col_double"を小数点記号としてコンマを使用する方法

難易度:フィールドはセミコロン(;)で区切られ、カンマ(,)は小数点として使用されます。だから、

library(readr) 

# Test data: 
T <- "Date;Time;Var1;Var2 
     01.01.2011;11:11;2,4;5,6 
     02.01.2011;12:11;2,5;5,5 
     03.01.2011;13:11;2,6;5,4 
     04:01.2011;14:11;2,7;5,3" 

read_delim(T, ";") 
# A tibble: 4 × 4 
#    Date  Time Var1 Var2 
#    <chr> <time> <dbl> <dbl> 
# 1  01.01.2011 11:11:00 24 56 
# 2  02.01.2011 12:11:00 25 55 
# 3  03.01.2011 13:11:00 26 54 
# 4  04:01.2011 14:11:00 27 53 

、私はパースの事は次のように働くだろうと思ったが、私はいつも、エラーメッセージを取得しています:

read_delim(T, ";", cols(Date = col_date(format = "%d.%m.%Y"))) 
# Error: expecting a string 

同じここに:

read_delim(T, ";", cols(Var1 = col_double())) 
# Error: expecting a string 

私は私がやっていると思います根本的に間違っていた。 ;)

また、read_delimにカンマを小数点として理解させるためのヒントをいただきたいと思います。 read.delimdec = ","でかなり簡単に実行できますが、最初から "readr" -Packageを使いたいと思っています。以前のバージョンにはcol_euro_doubleという機能がありましたが、削除されました。今の選択肢は何ですか?

答えて

3

作品read_delim()

read_delim(T, ";", locale=locale(decimal_mark = ",")) 
#    Date  Time Var1 Var2 
#    <chr>  <time> <dbl> <dbl> 
# 1  01.01.2011 40260 secs 2.4 5.6 
# 2  02.01.2011 43860 secs 2.5 5.5 
# 3  03.01.2011 47460 secs 2.6 5.4 
# 4  04:01.2011 51060 secs 2.7 5.3 
+0

おかげで、使用しているときlocale=を指定します!私は 'col_double()'呼び出しの中で 'locale'を設定しようとしました。 'cols(Date = col_date(format ="%d。%m。%Y "))'を使用しているときに 'エラー:文字列を期待しています 'というメッセージが表示される理由を教えてください。 – Pelle

+0

ああ、すでにそれを持っています: 'col_types = cols(日付= col_date(形式="%d。%m。%Y "))' – Pelle

関連する問題