如何在R中创建字符串上的变量条件
我正在尝试从R(act_用户)中的字符串中创建值的df条件中的变量“active”。如果df中变量scr_name和rt_name的名称在字符串中,我希望该变量的值为1,如果不是0如何在R中创建字符串上的变量条件,r,dataframe,if-statement,text,conditional-statements,R,Dataframe,If Statement,Text,Conditional Statements,我正在尝试从R(act_用户)中的字符串中创建值的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",
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")
df如果完全匹配,您可以使用:
df$active = apply(df,1,function(i)as.numeric(all(i %in% act_users)))
获取每一行,并返回True/False,无论每一列是否为act_用户的元素<代码>全部
仅当所有布尔值均为真时,才会为1
screen_name rt_name active
1 august berit 1
2 berit august 1
3 christopher david 0
4 david erica 0
5 erica frank 0
6 frank christopher 0
如果完全匹配,您可以使用:
df$active = apply(df,1,function(i)as.numeric(all(i %in% act_users)))
获取每一行,并返回True/False,无论每一列是否为act_用户的元素<代码>全部仅当所有布尔值均为真时,才会为1
screen_name rt_name active
1 august berit 1
2 berit august 1
3 christopher david 0
4 david erica 0
5 erica frank 0
6 frank christopher 0
也许您可以使用下面的代码来创建它,当您有许多行时,这可能比应用(df,1,…)更快:
- 解决方案1:
也许您可以使用下面的代码来创建它,当您有许多行时,这可能比应用(df,1,…)更快:
- 解决方案1:
如果只想检查两列,可以在这两列上使用%中的
%并合并结果
df$active <- +(df$screen_name %in% act_users & df$rt_name %in% act_users)
df
# screen_name rt_name active
#1 august berit 1
#2 berit august 1
#3 christopher david 0
#4 david erica 0
#5 erica frank 0
#6 frank christopher 0
df$active如果只想检查两列,可以在这两列上使用%
中的%并合并结果
df$active <- +(df$screen_name %in% act_users & df$rt_name %in% act_users)
df
# screen_name rt_name active
#1 august berit 1
#2 berit august 1
#3 christopher david 0
#4 david erica 0
#5 erica frank 0
#6 frank christopher 0
df$active
df$active <- +(df$screen_name %in% act_users & df$rt_name %in% act_users)
df
# screen_name rt_name active
#1 august berit 1
#2 berit august 1
#3 christopher david 0
#4 david erica 0
#5 erica frank 0
#6 frank christopher 0