R 如何定义具有两列的指示器

R 如何定义具有两列的指示器,r,dataframe,R,Dataframe,我有这些专栏 utility pass 2 None 3 NA -1 None -2 NA utility pass indicator 2 None 1

我有这些专栏

           utility     pass
              2          None
              3          NA
              -1         None
             -2           NA        
           utility     pass          indicator
              2          None            1
              3          NA              0
              -1         None            0
             -2           NA             0
如果:通过=无且实用程序>0,则指示器为1

输出

我有这些专栏

           utility     pass
              2          None
              3          NA
              -1         None
             -2           NA        
           utility     pass          indicator
              2          None            1
              3          NA              0
              -1         None            0
             -2           NA             0

一种可能是:

with(df, +(grepl("None", pass, fixed = TRUE) * utility > 0))

[1] 1 0 0 0

假设
NA
NA
而不是字符,我们可以实现如下所示的所需输出:

使用
dplyr
(在
时可以使用
case\u):

中使用

within(df, {
   indicator <- ifelse(!is.na(pass) & utility >0, 1, 0)
 })
  utility pass indicator
1       2 None         1
2       3 <NA>         0
3      -1 None         0
4      -2 <NA>         0
在(df{
指标0、1、0)
})
公用设施通行指示器
1 2无1
2       3          0
3-1无0
4      -2          0
数据:

df
df <- structure(list(utility = c(2L, 3L, -1L, -2L), pass = structure(c(1L, 
NA, 1L, NA), .Label = "None", class = "factor")), class = "data.frame", row.names = c(NA, 
-4L))