微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据一组字符串条件创建一个新列

如何解决根据一组字符串条件创建一个新列

我在许多国家/地区都有此专栏。

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 举报,一经查实,本站将立刻删除。