2

我正在尝试使用fct_recode()forcats 包中的命令重新标记一个数据框的列中的所有观察值,以与另一个数据框合并。我正在重新编码的列是来自联合国数据集的国家名称列表。我将它强制转换为一个因素,然后重新编码,但是对于其中一个国家名称,我收到了错误:

未知级别f:韩国,Dem。人民代表`

它似乎无法识别国名中的撇号。我使用anti_join()andunique()命令查找哪些条目不匹配,甚至复制并粘贴名称“Korea, Dem. People's Rep.”。到 fct_recode 给出了同样的错误。它似乎与撇号的格式有关,如以下代码行的差异所示:

undata <- mutate(undata, country_name=as.factor(country_name))
undata <- mutate(undata, country_name=fct_recode(country_name, 
                                 "Korea_North"="Korea, Dem. People's Rep."))
# versus
undata <- mutate(undata, country_name=fct_recode(country_name, 
                                  "Korea_North"="Korea, Dem. People’s Rep."))`

但是,复制和粘贴这些看似不同格式的撇号中的任何一个都会产生相同的错误。

我不知道如何用“正确的”撇号重新编码。

我正在使用适用于 Windows 10 和 tidyverse 1.2.1 的 R 版本 3.4.3。

4

1 回答 1

0

我在 fct_recode 中遇到了与逗号相同的问题,并事先运行了此代码,针对您的问题进行了一些修改:

  undata <- undata %>%
  mutate(country_name = as.character(country_name)) %>%
  mutate(country_name = str_replace_all(country_name,
    pattern = fixed("'"), 
    replacement = "")) %>%
  mutate(country_name = as.factor(country_name))
于 2020-10-12T16:38:50.797 回答