Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中创建字符串上的变量条件_R_Dataframe_If Statement_Text_Conditional Statements - Fatal编程技术网

如何在R中创建字符串上的变量条件

如何在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",

我正在尝试从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", "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