0

我有一个数据表,其中有一列是一个字符向量,称为nutcode. 该列的元素具有不同的编码。有些是unknown(mac标准);有些是UTF-8UTF-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 开发人员标记这一点。

4

1 回答 1

2

我找到的解决方案是使用以下代码行

Encoding(dt$nutCode) <- "unknown"

更新

我已经切换到

Encoding(dt$nutCode) <- "UTF-8"
于 2016-11-16T16:52:43.720 回答