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