r - 有更好的方法来进行 150 多个国家/地区重新编码吗?

标签 r if-statement indexing dplyr recode

我正在尝试将由已识别国家/地区组成的变量重新编码为我指定的区域。我尝试使用 dplyr 执行多个 if_else 语句将国家/地区变量重新编码为区域,但它变得非常长。

我想使用for循环遍历向量中的多个国家并将值更改为新值,在下面的示例中我想更改df中的值$country 匹配 i 并将其更改为 "Europe"。这是我开发的代码,似乎不起作用。有更好的方法吗?

df <- data.frame(country =c("Netherlands", "US", "Canada", "Frace", "Italy"),
       ID=1:100)
i <- c("Netherlands", "France", "Italy")
n <- length(i)

for (i in n){
df$country[(df$country == i)] <- "Europe"
}

根据我更改格式的方式,我收到了几个不同的错误。看来什么都行不通。

最佳答案

由于“国家/地区”是因素,因此我们可以将“国家/地区”的级别分配为%in%“i”到“欧洲”而不是使用 for 循环

levels(df$country)[levels(df$country) %in% i] <- "Europe"

关于r - 有更好的方法来进行 150 多个国家/地区重新编码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45131607/

相关文章:

r - 将库克的距离级别添加到 ggplot2

r - 对每个列组合应用函数

R:将函数应用于嵌套列表的最后一层并保留名称和结构

MySQL 8 降序复合索引变慢

mysql - mysql大表如何正确使用索引?

python - 如何根据列条件重命名 pandas DataFrame 索引

python - R apply在Python中的匹配速度

自时间戳以来经过的 Javascript 时间

python - 带有名称和输入的 If 语句

jQuery if href 属性