假设我创建了一个数据框 foo
:
foo <- data.frame(A=rep(NA,10),B=rep(NA,10))
foo$A[1:3] <- "A"
foo$B[6:10] <- "B"
看起来像是:
A B
1 A <NA>
2 A <NA>
3 A <NA>
4 <NA> <NA>
5 <NA> <NA>
6 <NA> B
7 <NA> B
8 <NA> B
9 <NA> B
10 <NA> B
我可以将这个合并为一个单独的列,像这样:
coalesce
。
data.frame(AB = coalesce(foo$A, foo$B))
提供,
AB
1 A
2 A
3 A
4 <NA>
5 <NA>
6 B
7 B
8 B
9 B
10 B
这很好。现在,假设我的数据框非常大,有很多列。如果不需要逐个命名每个列,如何使用
coalesce
函数?就我所知,coalesce
期望向量,因此我没有看到一个整洁的dplyr
解决方案,可以轻松地挑出所需的列并将它们一起传递。有什么想法吗?编辑
按要求提供一个“更难”的示例。
foo <- data.frame(A=rep(NA,10),B=rep(NA,10),C=rep(NA,10),D=rep(NA,10),E=rep(NA,10),F=rep(NA,10),G=rep(NA,10),H=rep(NA,10),I=rep(NA,10),J=rep(NA,10))
foo$A[1] <- "A"
foo$B[2] <- "B"
foo$C[3] <- "C"
foo$D[4] <- "D"
foo$E[5] <- "E"
foo$F[6] <- "F"
foo$G[7] <- "G"
foo$H[8] <- "H"
foo$I[9] <- "I"
foo$J[10] <- "J"
如何在不写下面这段代码的情况下对此进行合并:
data.frame(ALL= coalesce(foo$A, foo$B, foo$C, foo$D, foo$E, foo$F, foo$G, foo$H, foo$I, foo$J))