我正在尝试根据R中的字符串(act_users)的df条件值创建变量'active'。如果df中变量scr_name和rt_name的名称在字符串中,则我希望变量取值为1,如果不是0。
df <- data.frame("screen_name" = c("august", "berit", "christopher", "david", "erica", "frank"), "rt_name" = c("berit", "august", "david", "erica", "frank", "christopher"))
act_users <- c("david", "august", "berit")
我尝试了以下if else语句,但都不起作用
'%!in%' <- function(x,y)!('%in%'(x,y))#create a function
df$active <- ifelse((df$screen_name %in% act_users) & (df$rt_name %in% act_users), 1,
ifelse((df$screen_name %!in% act_users) & (df$rt_name %!in% act_users), 2))
#attempts only with screenname
df$active <- ifelse(df$screen_name %in% act_users, "1", ifelse(df$screen_name %!in% act_users, "0"))
df$active <- if(df$screen_name %in% act_users){
df$active == 1
} else {
df$active == 0}
我的最后一个解决方案是将活动用户字符串设置为df,合并结果并匹配数据帧内的列,但是我的数据很大,因此使用更有效的解决方案会很好吗?
非常感谢!
df$active <- ifelse(df$screen_name %in% act_users, 1, 0)