如何在逗号中使用“cols()”和“col_double”作为小数点
问题描述:
我想在阅读时将我的列与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
函数,但它已被删除。现在有什么替代方案?
答
指定使用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
由于当
locale=
,即作品!我试图在'col_double()'调用中设置'locale'。你也可以告诉我为什么我使用'cols(Date = col_date(format =“%d。%m。%Y”))''时出现'Error:expect a string'。 – Pelle哦,已经知道了:它是'col_types = cols(Date = col_date(format =“%d。%m。%Y”))' – Pelle