• Проблемы кодирования влияют на поведение dcasting таблицы данных.
У меня есть таблица данных со столбцом, который является символьным вектором с именем nutcode
, Элементы этого столбца имеют разные кодировки. Некоторые unknown
(стандарт Mac); некоторые UTF-8
, UTF-8
элементы включают µ. Примером является "vit_a_rae_µg". Эта кодировка, вероятно, существует, поскольку исходные данные были считаны из базы данных Access с использованием следующей строки кода (обратите внимание на выбор кодировки.
con <- odbcConnect("nutrientDataSR28",DBMSencoding="Windows-1252")
Когда я преобразую свою таблицу данных в широкий с nutcode
предоставляя имена столбцов, элементы UTF-8 не преобразуются в столбцы, и предупреждающее сообщение отсутствует. Я использую data.table v1.9.7 на Mac (версия R - Microsoft Open R ver 3.3.1.
Вот код, который имеет такое поведение.
formula.wide <- paste("usda_code + IMPACT_code + FdGrp_Cd + Long_Desc + Ref_Desc + Refuse ~ nutCode")
dt.wide <- data.table::dcast(
data = dt,
formula = formula.wide,
value.var = "Nutr_Val")
У меня есть хотя бы одно решение, которое я добавлю в качестве ответа. Но я также хотел отметить это для разработчиков data.table.
1 ответ
Я нашел решение использовать следующую строку кода
Encoding(dt$nutCode) <- "unknown"
Обновить
С тех пор я перешел на
Encoding(dt$nutCode) <- "UTF-8"