如何将数据框的两列与缺失数据合并?

Rot*_*ail 5 r missing-data

这是先前问题的延伸。如何将数据框的两列组合为

data <- data.frame('a' = c('A','B','C','D','E'),
                   'x' = c("t",2,NA,NA,NA),
                   'y' = c(NA,NA,NA,4,"r"))
Run Code Online (Sandbox Code Playgroud)

显示为

'a' 'x' 'y'  
 A   t   NA  
 B   2   NA  
 C  NA   NA  
 D  NA   4  
 E  NA   r
Run Code Online (Sandbox Code Playgroud)

要得到

 'a' 'mycol'  
  A   t  
  B   2  
  C   NA  
  D   4  
  E   r  
Run Code Online (Sandbox Code Playgroud)

我试过这个

cbind(data[1], mycol = na.omit(unlist(data[-1])))
Run Code Online (Sandbox Code Playgroud)

但它显然没有保留行NA

Ori*_*osa 3

您可以通过使用来做到这一点ifelse,如下所示:

data$mycol <- ifelse(!is.na(data$x), data$x, data$y)

> data

##   a  x  y mycol
## 1 A  1 NA     1
## 2 B  2 NA     2
## 3 C NA NA    NA
## 4 D NA  4     4
## 5 E NA  5     5
Run Code Online (Sandbox Code Playgroud)

  • 在 OP 的情况下效果很好,但如果涉及更多列,则不能很好地扩展...... (4认同)