Как в R и read_delim прочитать CSV без кавычек или завершающих символов?

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

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

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

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

Вот, например, содержимое первой строки CSV:

345365;99901000001201633;;BB – Banco do Brasil S.A.;Respondido;01/01/2016 09:24:13;consultar meu cpf . no spc 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);Internet;604629;Economia e Finanças;Economia;1;25 /01/2016 11:30:39;Презадо(а) Ср(а). , Encaminhamos, em anexo, resposta ao seu pedido de informação. Atenciosamente, Serviço de Informação ao Cidadão do Banco do Brasil – SICBB Recurso Conforme a Lei 12527/11 em seu artigo Art. 15, нет caso de indeferimento де acesso a informações ou às razões да negativa сделать acesso, poderá o interessado interpor recurso contra a decisão no prazo de 10 (dez) dias contar da sua ciência. Paragrafo único. O recurso será dirigido à autoridade hierarquicamente Superior à que exarou a decisão impugnada, que deverá se manifestar no prazo de 5 (cinco) dias.;Acesso Concedido;Resposta solicitada inserida no e-SIC

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

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?


person Reinaldo Chaves    schedule 02.02.2020    source источник


Ответы (1)


Вы можете указать формат столбца по умолчанию, используя 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
person Eugene Chong    schedule 02.02.2020
comment
Большое спасибо @EugeneChong, но я думаю, что в этом файле все еще есть что-то, что остается незамеченным. Потому что он продолжает АН во всех линиях, даже со своими предложениями. Я до сих пор не понимаю - person Reinaldo Chaves; 02.02.2020
comment
Я помещаю файл здесь, если вы хотите посмотреть: drive.google.com /файл/d/1C8deV1uWfIvXB1eGOujzffmF2M34653B/ - person Reinaldo Chaves; 02.02.2020
comment
Привет @ReinaldoChaves, я проверил файл и получил ту же ошибку при использовании всего набора данных, а не ваших образцов данных. К сожалению, я не уверен, как это исправить, но я предполагаю, что одна или несколько строк данных имеют другую структуру, чем первая строка. Я бы попытался найти одну из этих ломаных линий, а затем отредактировал ваш вопрос, включив эту новую ломаную линию в образец данных. - person Eugene Chong; 02.02.2020