R-如何使用mutate和filter添加多个条件

R-如何使用mutate和filter添加多个条件,r,subset,mutate,R,Subset,Mutate,我正在处理一个数据集,我了解如何使用mutate和filter设置一个条件, 但是我想根据用户位置的值设置多个条件。此外,如果任何国家/地区的用户位置缺失,我希望设置=“其他” #1。原始数据帧中的一些值 lat=c(-58.3815591,-63.6166720,-58.3815591,-102.5527840,-58.3815591) lon=c(-34.6036844,-38.4160970,-34.6036844,23.6345010,-34.6036844) user_location

我正在处理一个数据集,我了解如何使用mutate和filter设置一个条件,
但是我想根据用户位置的值设置多个条件。此外,如果任何国家/地区的用户位置缺失,我希望设置=“其他”

#1。原始数据帧中的一些值
lat=c(-58.3815591,-63.6166720,-58.3815591,-102.5527840,-58.3815591)
lon=c(-34.6036844,-38.4160970,-34.6036844,23.6345010,-34.6036844)
user_location=c(‘阿根廷布宜诺斯艾利斯’、‘阿根廷’、‘布宜诺斯艾利斯’、‘墨西哥’、‘布宜诺斯艾利斯自治市’)
n=c(88,81,71,29,26)
b=数据帧(横向、纵向、用户位置,n)
# 2. 滤器
#举个例子:
c_阿根廷原始数据

lat = c(-58.3815591, -63.6166720, -58.3815591, -102.5527840, -58.3815591)
lon = c(-34.6036844, -38.4160970, -34.6036844, 23.6345010, -34.6036844)
user_location = c('Buenos Aires, Argentina', 'Argentina', 'Buenos Aires', 'México', 'Ciudad Autónoma de Buenos Aire')
n = c(88,81,71,29,26)

b = data.frame(lat,lon,user_location,n,stringsAsFactors = F)
预期结果

lat = c(-58.3815591, -63.6166720, -58.3815591, -102.5527840, -58.3815591, NA) 
lon = c(-34.6036844, -38.4160970, -34.6036844, 23.6345010, -34.6036844, NA) 
user_location = c('Buenos Aires, Argentina', 'Argentina', 'Buenos Aires', 'México', 'Ciudad Autónoma de Buenos Aire','London') 
n = c(88,81,71,29,26,101) 
country = c('Argentina', 'Argentina', 'Argentina', 'México', 'Argentina', 'Other') 
result = data.frame(lat,lon,user_location,n,country)
标记过滤器

c_united_states <- c("USA","Washington","DC","Chicago",'United States','NY','Miami') 
c_argentina <- c("Buenos Aires","Buenos Aire","Argentina") 
c_mexico <- c("México")
1.用管道连接匹配的城市

 c1 <- paste0(c_united_states,collapse = "|")
 c2 <- paste0(c_argentina,collapse = "|")
 c3 <- paste0(c_mexico,collapse = "|") 

c1“我想设置多个条件”。比如什么条件?你希望得到什么样的产出?@camille在国家报上加了一个专栏。让我加上预期结果:
lat=c(-58.3815591,-63.6166720,-58.3815591,-102.5527840,-58.3815591,NA)lon=c(-34.6036844,-38.4160970,-34.6036844,23.6345010,-34.6036844,NA)user_location=c(‘阿根廷布宜诺斯艾利斯’、‘阿根廷’、‘布宜诺斯艾利斯’、‘墨西哥’、‘布宜诺斯艾尔自治市’、‘伦敦’)n=c(88,71,101)country=c(‘阿根廷’、‘阿根廷’、‘墨西哥’、‘阿根廷’、‘其他’)结果=data.frame(纬度、经度、用户位置、n、国家)
@rmn:请将其添加到您的问题中非常感谢!我真的很感激你一步一步地添加的所有评论。我开始使用R,这个练习完全超出了我目前的技能.np。每一个优秀的R用户都是从你所在的地方开始的!希望这会有所帮助。:)
library(dplyr)
 c1 <- paste0(c_united_states,collapse = "|")
 c2 <- paste0(c_argentina,collapse = "|")
 c3 <- paste0(c_mexico,collapse = "|") 
c_country <- rbind(c(c1,"US"),c(c2,"Argentina"),c(c3,"Mexico")) %>%
data.frame(stringsAsFactors = F)
b$country <- "Other"
for (i in 1:nrow(c_country)) {
b$country <- ifelse(grepl(pattern = c_country$X1[i],x = b$user_location),c_country$X2[i],b$country)
}