通过比较R中的两个变量来标记每条记录

0 if-statement r binary-data conditional-statements

如何创建一个新的二进制变量来比较现有数据框中的另外两个二进制变量?

对于数据框"dframe":

    ID       FlagA  FlagB
1   28602363    1    0
2   28605734    0    1
3   28608629    1    0
4   28611734    1    0
5   28619822    NA   0
6   28622689    1    1
7   28650295    NA   1
8   28650378    0    1
9   28651602    1    1
10  28656060    1    0
Run Code Online (Sandbox Code Playgroud)

我试图创建列"FlagAB",如果FlagA = 1且FlagB = 0则为1,对于任何其他组合为0,如下所示:

    ID          FlagA   FlagB   FlagAB
1   28602363    1       0       1
2   28605734    0       1       0
3   28608629    1       0       1
4   28611734.71 1       0       1
5   28619822    NA      0       0
6   28622689.71 1       1       0
7   28650295    NA      1       0
8   28650378    0       1       0
9   28651602    1       1       0
10  28656060    1       0       0
Run Code Online (Sandbox Code Playgroud)

我尝试了以下一些变种而没有运气.这个用"0"填充FlagAB的所有行

dframe$FlagAB <- ifelse((dframe$FlagA=="1")&(dframe$FlagB=="0"),1,0)
Run Code Online (Sandbox Code Playgroud)

cde*_*man 5

df$FlagAB <- ifelse(df$FlagA == 1 & !is.na(df$FlagA) & df$FlagB == 0, 1, 0)
df

         ID FlagA FlagB FlagAB
1  28602363     1     0      1
2  28605734     0     1      0
3  28608629     1     0      1
4  28611734     1     0      1
5  28619822    NA     0      0
6  28622689     1     1      0
7  28650295    NA     1      0
8  28650378     0     1      0
9  28651602     1     1      0
10 28656060     1     0      1
Run Code Online (Sandbox Code Playgroud)

编辑

如下所述,您实际上不需要使用,ifelse因为结果是逻辑向量.

as.numeric(df$FlagA == 1 & !is.na(df$FlagA) & df$FlagB == 0)
Run Code Online (Sandbox Code Playgroud)