【问题标题】:specific col_type = col_double when number have comma and point, no trailing characters error具体 col_type = col_double 当数字有逗号和点,没有尾随字符错误
【发布时间】:2019-03-25 09:07:57
【问题描述】:

我在 txt 文件中使用“|”对数据进行平方处理具有这样的值的分隔符数据

no| value
1|  3,123.00
2|  1,122.75

import it with this code:
library(readr)
data <- read_delim("file.txt", "|", trim_ws = TRUE, locale = locale(decimal_mark = "."), col_types = cols(no = col_double(),
value = col_double()))

Warning: 2 parsing failures.
row    col  expected               actual   file
  1 value   no trailing characters ,123.00 'file.txt'
  2 value   no trailing characters ,122.75 'file.txt'

这使得导入的数据为NA,我已经指定了本地小数点。

为什么我的值是这样读的:,123.00?,逗号前的第一个数字丢失如果我用col_double指定col_types。它可以在没有指定 col_types 的情况下工作,但我确实需要指定 col_types

【问题讨论】:

    标签: r readr


    【解决方案1】:

    您可以分两步完成:将value 读取为字符串,然后转换为数字。

    library("tidyverse")
    library("readr")
    
    file <- "
    no| value
    1|  3,123.00
    2|  1,122.75
    "
    
    x <- read_delim(
      file, "|", trim_ws = TRUE,
      col_types = cols(value = col_character())) %>%
      mutate_at(vars(value), parse_number)
    x
    #> # A tibble: 2 x 2
    #>      no value
    #>   <dbl> <dbl>
    #> 1     1 3123 
    #> 2     2 1123.
    
    # Are fractions missing? No they are not.
    x$value
    #> [1] 3123.00 1122.75
    

    reprex package (v0.2.1) 于 2019 年 3 月 26 日创建

    【讨论】:

    • 使用此解决方案,十进制值丢失
    • 不,它没有丢失。它没有打印出来。
    猜你喜欢
    • 2015-03-08
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多