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)
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)