определенный тип col_type = col_double, когда число имеет запятую и точку, нет ошибки завершающих символов - PullRequest
0 голосов
/ 25 марта 2019

У меня есть квадрат данных в текстовом файле с "|" разделитель данных со значением, подобным этому

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_types с col_double. он работает без специальных col_types, но мне действительно нужно указать col_types

1 Ответ

0 голосов
/ 25 марта 2019

Вы можете сделать это в два этапа: прочитать 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

Создано в 2019-03-26 с помощью пакета Представить (v0.2.1)

...