按条件合并两列数据 table
Merge two columns of data table on condition
我想用R解决以下问题:
我有一个 数据 table,其值来自两个实验室:lab1
和 lab2
。可能 lab1
或 lab2
包含 NA
值,因此“lab3”列应包含非 NA 值。如果lab1
和lab2
包含NA
当然lab3
也是NA
,但是如果lab1
和lab2
包含值, 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
我想用R解决以下问题:
我有一个 数据 table,其值来自两个实验室:lab1
和 lab2
。可能 lab1
或 lab2
包含 NA
值,因此“lab3”列应包含非 NA 值。如果lab1
和lab2
包含NA
当然lab3
也是NA
,但是如果lab1
和lab2
包含值, 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