用R中的NA重新编码变量

cod*_*art 2 r na recode

我试图根据其他三个变量的值编写一个新变量.具体来说,如果所有变量都是NA,我希望新变量取NA,如果它们中的任何一个是1,它应该取1,否则它应该取0.但是,我使用下面的代码遇到错误:

frame <- data.frame(x = c(NA,NA,1), x2 = c(NA, NA, 0), x3 = c(NA,0,0))
frame

y <- ifelse(is.na(frame$x) == TRUE & is.na(frame$x2) == TRUE & is.na(frame$x3) == TRUE, NA, 0)
y2 <- ifelse(frame$x == 1 | frame$x2 == 1 | frame$x3 == 1, 1, y)
Run Code Online (Sandbox Code Playgroud)

y的第二个数字正确为0,但在y2中引用时变为NA.知道为什么会这样吗?

akr*_*run 5

获得预期输出的一个选择是

  do.call(pmax, c(frame, na.rm=TRUE))
  #[1] NA  0  1
Run Code Online (Sandbox Code Playgroud)

  • @ user2154571如果您的数据集中只有零,NA或1,则此解决方案是您可以获得的最佳解决方案. (3认同)