2017-04-05 58 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.delim可以很容易地與dec = ","做到這一點,但我真的很想從一開始就使用「閱讀器」 - 包裝而不用掙扎。前版本中有一個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」))''時出現'Error:expect a string'。 – Pelle

+0

哦,已經知道了:它是'col_types = cols(Date = col_date(format =「%d。%m。%Y」))' – Pelle

相關問題