r - 如何使用 "cols()"和 "col_double"关于逗号作为小数点

标签 r csv readr

我想在阅读时使用 readr 包将我的专栏解析为正确的类型。

难点:字段之间用分号(;)分隔,而逗号(,)用作小数点。

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 = "," 很容易地做到这一点,但我真的很想从一开始就使用“readr”-Package,而不用纠结。以前的版本中有一个col_euro_double 函数,但已被删除。现在有哪些替代方案?

最佳答案

使用read_delim()时指定locale=

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

关于r - 如何使用 "cols()"和 "col_double"关于逗号作为小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53197258/

相关文章:

csv - "Read CSV"文件在 UiPath Studio 中丢失

r - dplyr - 重命名由 readr 创建的列 [EMPTY]

r - 动态循环 htmlwidgets 并为 RMarkdown 添加 knit 格式

删除所有 NA,同时保留尽可能多的数据

r - 无法运行 glmnet() R 包 : "could not find function "lengths""

r - 在 readr R 中使用 parse_number 的负货币值

r - 将 xml 对象写入磁盘

r - 如何防止在 R 中调整字体、绘图对象等的大小?

csv - 使用 Apex Data Loader 将记录加载到具有主详细信息关系的对象中

java - 我们如何使用 Java 代码将 XML 文件转换为 CSV?