Как я могу использовать dbReadTable, чтобы иметь определенный класс для моих переменных

При чтении таких данных:

library(odbc)
library(DBI)
Id_test <- Id(schema = "Eelke", table = "test")
raw <- dbReadTable(con, Id_test)

Одна из переменных считывается как числовая, и она теряет часть нулей, которые мне нужны.

Как я могу убедиться, что переменная читается как chr или factor?


person Eelke    schedule 18.04.2018    source источник
comment
если длина чисел всегда одинакова, вы можете использовать str_pad functin   -  person Mislav    schedule 18.04.2018
comment
Спасибо, Мислав, этот обходной путь очень полезен, однако у меня есть числа 13 и 14.   -  person Eelke    schedule 18.04.2018


Ответы (1)


dbReadTable() вернет все, что вернет драйвер базы данных (в данном случае odbc). Нет никакого переопределения.

Вы не предоставили много подробностей, но кажется, что ODBC почему-то неправильно возвращает столбец символов как числовой. Один из способов «убедить» его прекратить такое поведение — создать SQL-запрос, который составляет строку, которую нельзя спутать с числом:

dbGetQuery(con, "SELECT CONCAT('#', id_column, '#')")
person krlmlr    schedule 21.05.2018
comment
Благодарю вас! Это действительно удалось! - person Eelke; 23.05.2018