R中有多个ifelse和和/或条件

时间:2018-02-23 14:04:41

标签: r if-statement dplyr tidyr

我有一个数据集,我想创建一个多个ifelse语句。 我想知道这个人/身份在2011年和2012年是否住在大城市(伦敦或巴黎)。有什么建议我怎么能用多个ifelse得到这个?

 id<-  c(1,1,2,2,3)
 location <- c('london', 'paris', 'london', 'kathmanadu','newyork')
 year<- c(2011, 2010, 2012, 2011, 2010)
 df<- data.frame(location, year)
 df$bigcity<- ifelse(df$location=='london'| df$location=='paris' & 
 df$year==2011| df$year==2012, 1, 0)

3 个答案:

答案 0 :(得分:0)

我认为通过多个ifelse你的意思是嵌套的ifelse。如果是这种情况,这是一个解决方案

df$bigcity <- ifelse(grepl("london|paris", df$location), ifelse(grepl("2011|2012", df$year), 1, 0), 0)

我在这里做的是,如果第一个条件为真,则将第二个条件放在TRUE参数中。

答案 1 :(得分:0)

使用data.table,它出现为:

library(data.table)
setDT(df)
df[,location := ifelse(location %in% c('paris','london') & year %in% c(2011,2012),1,0)]

   id   location year new_value
1:  1     london 2011         1
2:  1      paris 2010         0
3:  2     london 2012         1
4:  2 kathmanadu 2011         0
5:  3    newyork 2010         0

答案 2 :(得分:0)

使用dplyr的{​​{1}}解决方案,因为我认为它比嵌套filter更具可读性

ifelse
  

我想知道这个人/身份在2011年和2012年是否住在大城市(伦敦或巴黎)

 id<-  c(1,1,2,2,3)
 location <- c('london', 'paris', 'london', 'kathmanadu','newyork')
 year<- c(2011, 2010, 2012, 2011, 2010)
 df<- data.frame(id, location, year)