我有一个数据表,其中有一列是一个字符向量,称为nutcode
. 该列的元素具有不同的编码。有些是unknown
(mac标准);有些是UTF-8
。UTF-8
元素包括μ 。一个例子是“vit_a_rae_µg”。这种编码可能存在,因为原始数据是使用以下代码行从 Access 数据库中读取的(注意编码选择。
con <- odbcConnect("nutrientDataSR28",DBMSencoding="Windows-1252")
当我通过提供列名将我的数据表转换为宽时nutcode
,UTF-8 元素不会转换为列并且没有警告消息。我在 Mac 上使用 data.table v1.9.7(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 开发人员标记这一点。