如何解决根据一组字符串条件创建一个新列
我在许多国家/地区都有此专栏。
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可能有一个聪明的解决方案,但是任何解决方案都值得欢迎。我该怎么做?
解决方法
@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创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。