В R и read_delim, как мне прочитать CSV без кавычек или завершающих символов? - PullRequest
0 голосов
/ 02 февраля 2020

На машине с Ubuntu и R 3.6.2 я хочу открыть файл CSV

В LibreOffice я увидел, что файл имеет ";" разделитель и кодировка ISO-8859-1

Это файл без имен столбцов (заголовок), и данные на бразильском португальском языке. Даты в формате ДД / ММ / ГГГГ ЧЧ: ММ: СС

Есть несколько столбцов с уникальными идентификационными кодами, поэтому, за исключением дат, я хотел бы сохранить все столбцы в виде строки

Здесь содержание первой строки CSV в качестве примера:

345365; 99901000001201633 ;; BB - Banco do Brasil SA; Respondido; 01/01/2016 09: 24: 13; consultar meu cpf. нет sp c e serasa; Consulta do cpf no serasa e spc; 25/01/2016 23: 59: 59; NÃO; NÃO; Pelo sistema (com avisos por email); Интернет; 604629; Economia e Finanças; Economia; 1; 25/01/2016 11: 30: 39; Prezado (а) Sr (а). , Encaminhamos, em anexo, resposta ao seu pedido de informação. Atenciosamente, Служба информации в Сидадао до Банко до Бразилии - SICBB Recurso Conforme a Lei 12527/11 em seu arti go Art. 15, нет никакой дополнительной информации и информации, которая может быть достигнута, и что вы можете сделать так, чтобы это не противоречило 10 (де), то есть, что вы хотите сделать. Parágrafo único. O recurso será dirigido à autoridadeierarquicamente superior ’que exarou a decisou impugnada, que deverá se manifestar no prazo de 5 (cinco) dias.; Acesso Concedido; Resposta solicitada inserida no e-SI C

Итак, я попробовал сначала так:

library(readr)
asks_2016 <- read_delim("2016/20200201_Pedidos_csv_2016.csv", 
                                         ";", escape_double = FALSE, col_names = FALSE, 
                                         locale = locale(encoding = "ISO-8859-1"))

Но возвращен весь фрейм данных NA

У меня были такие предупреждения:

Parsed with column specification:
cols(
  .default = col_logical(),
  X1 = col_double()
)
See spec(...) for full column specifications.
|==================================================================================| 100%  291 MB
Warning: 1923814 parsing failures.
row col               expected actual                                 file
  1  X1 no trailing characters        '2016/20200201_Pedidos_csv_2016.csv'
  1  X2 1/0/T/F/TRUE/FALSE            '2016/20200201_Pedidos_csv_2016.csv'
  1  X3 1/0/T/F/TRUE/FALSE            '2016/20200201_Pedidos_csv_2016.csv'
  1  X4 1/0/T/F/TRUE/FALSE            '2016/20200201_Pedidos_csv_2016.csv'
  1  X5 1/0/T/F/TRUE/FALSE            '2016/20200201_Pedidos_csv_2016.csv'
... ... ...................... ...... ....................................
See problems(...) for more details.

Пожалуйста, кто-нибудь знает правильный способ загрузить этот CSV?

1 Ответ

2 голосов
/ 02 февраля 2020

Вы можете указать формат столбца по умолчанию, используя col_types и cols(). Ниже мы указываем, что все должно читаться как символ.

library(readr)
asks_2016 <- read_delim("2016/20200201_Pedidos_csv_2016.csv", 
                        ";", escape_double = FALSE, col_names = FALSE, 
                        locale = locale(encoding = "ISO-8859-1"),
                        col_types = cols(.default = "c"))

Затем преобразовать столбец даты в POSIXct.

asks_2016$datetime <- as.POSIXct(asks_2016$X18, format = "%d/%m/%Y %H:%M:%S")

head(asks_2016)

# A tibble: 1 x 22
  X1     X2     X3    X4       X5     X6      X7       X8     X9     X10   X11   X12     X13   X14   X15    X16   X17   X18    X19               X20   X21     datetime           
  <chr>  <chr>  <chr> <chr>    <chr>  <chr>   <chr>    <chr>  <chr>  <chr> <chr> <chr>   <chr> <chr> <chr>  <chr> <chr> <chr>  <chr>             <chr> <chr>   <dttm>             
1 345365 99901~ NA    "BB â\u~ Respo~ 01/01/~ consult~ Consu~ 25/01~ "NÃ\~ "NÃ\~ Pelo s~ Inte~ 6046~ Econo~ Econ~ 1     25/01~ "Prezado(a) Sr(a~ Aces~ Respos~ 2016-01-25 11:30:39
...