大陆 - 创建一个新变量 - R.

时间:2017-12-07 15:58:45

标签: r

我的数据框中有198个国家,由联合国命名。我想创建一个新的变量,将这些国家划分为各大洲。

到目前为止,我一直在使用以下代码:

attach(df) 
df$Continent[Country==c('country', 'country', ...)] <- "Americas"
df$Continent[Country==c('country', 'country', ...)] <- "Africa"
df$Continent[Country==c('country', 'country', ...)] <- "Asia"
df$Continent[Country==c('country', 'country', ...)] <- "Europe"
df$Continent[Country==c('country', 'country', ...)] <- "Oceania"
detach(df)

问题在于R不允许我将每个大陆的所有国家/地区名称放在同一个括号中,显示警告消息“较长的对象长度不是较短对象长度的倍数”。如果我将国家分成多行,我就能做到。然而,这是非常低效的,所以我想知道是否有一种聪明/最快的方法呢?

1 个答案:

答案 0 :(得分:1)

作为LyzandeR stated,您可以使用%in%运算符。首先定义国家列表也可能更清晰,如下所示:

americas <- c("country", "country", "country", ...)
africa <- c("country", "country", "country", ...)
asia <- c("country", "country", "country", ...)
# and so on...

attach(df) 
df$Continent[Country %in% americas] <- "Americas"
df$Continent[Country %in% africa] <- "Africa"
df$Continent[Country %in% asia] <- "Asia"
df$Continent[Country %in% europe] <- "Europe"
df$Continent[Country %in% oceania] <- "Oceania"
detach(df)