Reputation: 995
On a machine with Ubuntu and R 3.6.2 I want to open a CSV file
In LibreOffice I saw that the file has a ";" separator and ISO-8859-1 encoding
It is a file with no column names (header) and the data is in Brazilian Portuguese. Dates in DD/MM/YYYY HH:MM:SS format
There are some columns with unique identification codes, so with the exception of dates, I would like to keep all columns as a string
Here the content of the first line of the CSV as an example:
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;Prezado(a) Sr(a). , 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, no caso de indeferimento de acesso a informações ou às razões da negativa do acesso, poderá o interessado interpor recurso contra a decisão no prazo de 10 (dez) dias a contar da sua ciência. Parágrafo ú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
So I tried it like this first:
library(readr)
asks_2016 <- read_delim("2016/20200201_Pedidos_csv_2016.csv",
";", escape_double = FALSE, col_names = FALSE,
locale = locale(encoding = "ISO-8859-1"))
But the dataframe returned is all NA
I had these warning messages:
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.
Please, does anyone know the correct way to load this CSV?
Upvotes: 1
Views: 2137
Reputation: 1741
You can specify a default column format using col_types
and cols()
. Below, we specify everything should be read in as a character.
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"))
Then turn the date column into 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
Upvotes: 2