如何在R中应用多个if语句?

Ash*_*Ash 1 if-statement r

我有一个数据框(df),列出与每个站点关联的国家/地区

Site          Country
Site1         USA
Site2         Vietnam
Site3         Spain
Site4         Germany
Site5         China
Run Code Online (Sandbox Code Playgroud)

我想附上一个专栏,我将每个国家与其相应的大陆联系起来.我写了一个简单if loop的做法:

df$Continent <- NA
if(df$Country == "USA" |df$Country ==  "Canada" |df$Country == "Mexico")
 {df$Continent <- "North America"}
if(df$Country == "Spain" |df$Country == "France" |df$Country == "Germany")
{df$Continent <- "Europe"}
## .. etc

summary(df)
Run Code Online (Sandbox Code Playgroud)

但是,每当我运行df时,我发现它将北美分配给所有国家.我知道这可能听起来很微不足道,但是如果我if在任何地方使用法规而不是else或者它会有所不同if else吗?有任何纠正这个的建议吗?

Rei*_*son 5

merge()使用数据构建查找表及其.

例如:

lookup <- data.frame(Country = c("USA", "Canada", "Mexico",
                                 "Spain", "France", "Germany",
                                 "Vietnam", "China"),
                     Continent = rep(c("North America", "Europe", "Asia"),
                                     times = c(3,3,2)))
Run Code Online (Sandbox Code Playgroud)

使用您的数据片段作为数据框df,我们可以添加Continentvia merge()(数据库术语中的连接):

> merge(df, lookup, sort = FALSE, all.x = TRUE)
  Country  Site     Continent
1     USA Site1 North America
2 Vietnam Site2          Asia
3   Spain Site3        Europe
4 Germany Site4        Europe
5   China Site5          Asia
Run Code Online (Sandbox Code Playgroud)