按条件合并两列数据 table

Merge two columns of data table on condition

我想用R解决以下问题:

我有一个 数据 table,其值来自两个实验室:lab1lab2。可能 lab1lab2 包含 NA 值,因此“lab3”列应包含非 NA 值。如果lab1lab2包含NA当然lab3也是NA,但是如果lab1lab2包含值, lab3 应应用 lab2 的值(这是“更重要”的实验室)。

示例:

lab1     lab2     lab3
5        7        7       < lab 3 contains the value of lab 2 (because more important)
8        10       10      < lab 3 contains the value of lab 2 (because more important)
NA       3        3       < lab 3 contains the value of lab 2, because lab 1 is NA
9        NA       9       < lab 3 contains the value of lab 1, because lab 2 is NA
NA       NA       NA      < lab 3 contains NA, because lab 1 and lab 2 contain NA

我找到了函数 coalesce (dplyr),但我无法定义 lab2 的首要重要性(超过 lab1)。

感谢您的帮助!

如果您正在使用 data.table

,您可以尝试 fcoalesce
> setDT(df)[, lab3 := fcoalesce(lab2, lab1)][]
   lab1 lab2 lab3
1:    5    7    7
2:    8   10   10
3:   NA    3    3
4:    9   NA    9
5:   NA   NA   NA

这可能有效。

df %>%
  mutate(lab3 = ifelse(!is.na(lab2), lab2, lab1))

   lab1  lab2  lab3
  <dbl> <dbl> <dbl>
1     5     7     7
2     8    10    10
3    NA     3     3
4     9    NA     9
5    NA    NA    NA