• Проблемы кодирования влияют на поведение 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"
Другие вопросы по тегам