2016-11-16 1 views
0

J'ai une table de données avec une colonne qui est un vecteur de caractères appelé nutcode. Les éléments de cette colonne ont des codages différents. Certains sont unknown (l'étalon Mac); certains sont UTF-8. Les éléments UTF-8 incluent μ. Un exemple est "vit_a_rae_μg". Ce codage est probablement là parce que les données originales ont été lues à partir d'une base de données Access en utilisant la ligne de code suivante (note de codage choix.r les problèmes de codage affectent le comportement de diffusion d une table de données

con <- odbcConnect("nutrientDataSR28",DBMSencoding="Windows-1252") 

Quand je convertir ma table de données large avec nutcode fournissant les noms de colonnes, les éléments UTF-8 ne sont pas convertis en colonnes et il n'y a pas de message d'avertissement J'utilise data.table v1.9.7 sur un mac (version R est Microsoft Open R ver 3.3.1

Voici le code a ce comportement

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") 

I avoir au moins une solution, que je vais ajouter comme réponse. Mais je voulais aussi signaler cela aux développeurs de data.table.

Répondre

2

La solution que je trouve est d'utiliser la ligne de code suivante

Encoding(dt$nutCode) <- "unknown" 

Mise à jour

J'ai depuis passé à

Encoding(dt$nutCode) <- "UTF-8"