这是先前问题的延伸。如何将数据框的两列组合为
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。
您可以通过使用来做到这一点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)