我在许多国家/地区都有此专栏。
countries <- c(Germany, France, Japan, China, Angola, Nigeria)
我想创建一个新的列,称为大洲,对这些地方进行汇总。例如,我尝试了此操作,但没有成功:
if (countries == "Germany" | "France" {
countries$continents <- "Europe"
} else if (countries == "Japan" |"China") {
countries$continents <- "Asia"
} else if (countries == "Angola" |"Nigeria") {
countries$continents <- "África"
但是R一直在说我不允许比较字符串。 也许dplyr可能有一个聪明的解决方案,但是任何解决方案都值得欢迎。我该怎么做?
答案 0 :(得分:1)
@markus指出使用%in%
您可以使用dplyr
library(dplyr)
df <- data.frame(countries = c("Germany", "France", "Japan", "China", "Angola", "Nigeria"))
df1 <-
df %>%
mutate(continent = case_when(countries %in% c("Germany", "France") ~ "Europe",
countries %in% c("Japan", "China") ~ "Asia",
countries %in% c("Angola", "Nigeria") ~ "Africa"))
但是使用countrycode
包可能会更整洁,再次由@markus指出
library(countrycode)
df_continents <-
codelist %>%
select(country.name.en, continent)
df2 <-
df %>%
left_join(df_continents, by = c("countries" = "country.name.en"))
df2
#> countries continent
#> 1 Germany Europe
#> 2 France Europe
#> 3 Japan Asia
#> 4 China Asia
#> 5 Angola Africa
#> 6 Nigeria Africa
由reprex package(v0.3.0)于2020-09-18创建