合并两列以获得 R 中的一列

Combining two columns in order to get one column in R

我正在寻找一种将两列合并为一列的方法。这些列是互斥的,因此一列上的有效值意味着另一列中的 NA。

structure(list(income_under_median = c(NA, "751.000 - 1.000.000", 
"751.000 - 1.000.000", "Below 451.000", NA, NA, NA, NA, "451.000 - 750.000", 
NA), income_above_median = c("2.501.000 - 3.000.000", NA, NA, 
NA, "Below 1.501.000", "Below 1.501.000", "2.001.000 - 2.500.000", 
"1.501.000 - 2.000.000", NA, "3.001.000 - 4.000.000")), row.names = c(NA, 
10L), class = "data.frame")

   income_under_median   income_above_median
1                 <NA> 2.501.000 - 3.000.000
2  751.000 - 1.000.000                  <NA>
3  751.000 - 1.000.000                  <NA>
4        Below 451.000                  <NA>
5                 <NA>       Below 1.501.000
6                 <NA>       Below 1.501.000
7                 <NA> 2.001.000 - 2.500.000
8                 <NA> 1.501.000 - 2.000.000
9    451.000 - 750.000                  <NA>
10                <NA> 3.001.000 - 4.000.000

我想将其合并为一栏,以便获得净收入的一栏,我可以轻松地将其转换为接近比例的水平。

我按照这个question试了一下,但是没有得到我想要的结果:

lebanon$test <- paste(lebanon$income_under_median, lebanon$income_above_median)

 [1] "NA 2.501.000 - 3.000.000" "751.000 - 1.000.000 NA"   "751.000 - 1.000.000 NA"  
 [4] "Below 451.000 NA"         "NA Below 1.501.000"       "NA Below 1.501.000"      
 [7] "NA 2.001.000 - 2.500.000" "NA 1.501.000 - 2.000.000" "451.000 - 750.000 NA"    
[10] "NA 3.001.000 - 4.000.000"

有人知道这个问题的解决方案吗?

问候

一个解决方案是使用 dplyrcoalesce 函数

lebanon$test <- dplyr::coalesce(lebanon$income_under_median, lebanon$income_above_median)

或者,在管道内

library(dplyr)
lebanon %>%
  mutate(test = coalesce(income_under_median, income_above_median))

输出

#    income_under_median   income_above_median                  test
# 1                 <NA> 2.501.000 - 3.000.000 2.501.000 - 3.000.000
# 2  751.000 - 1.000.000                  <NA>   751.000 - 1.000.000
# 3  751.000 - 1.000.000                  <NA>   751.000 - 1.000.000
# 4        Below 451.000                  <NA>         Below 451.000
# 5                 <NA>       Below 1.501.000       Below 1.501.000
# 6                 <NA>       Below 1.501.000       Below 1.501.000
# 7                 <NA> 2.001.000 - 2.500.000 2.001.000 - 2.500.000
# 8                 <NA> 1.501.000 - 2.000.000 1.501.000 - 2.000.000
# 9    451.000 - 750.000                  <NA>     451.000 - 750.000
# 10                <NA> 3.001.000 - 4.000.000 3.001.000 - 4.000.000