我有一个数据集,我想创建一个多个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)
答案 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)