我想合并多个列。这是我的样本数据集的样子。
df <- data.frame(
id = c(1,2,3,4,5),
cat.1 = c(3,4,NA,4,2),
cat.2 = c(3,NA,1,4,NA),
cat.3 = c(3,4,1,4,2))
> df
id cat.1 cat.2 cat.3
1 1 3 3 3
2 2 4 NA 4
3 3 NA 1 1
4 4 4 4 4
5 5 2 NA 2
我正在尝试合并列 cat.1
cat.2
和 cat.3
。这对我来说有点复杂,因为有 NA。
我只需要一个 cat
变量,甚至有些列有 NA
,我需要忽略它们。所需的输出如下:
> df
id cat
1 1 3
2 2 4
3 3 1
4 4 4
5 5 2
有什么想法吗?
最佳答案
使用 dplyr::transmute
的 Gregor 答案的另一种变体:
library(dplyr)
df %>%
transmute(id = id, cat = coalesce(cat.1, cat.2, cat.3))
#> id cat
#> 1 1 3
#> 2 2 4
#> 3 3 1
#> 4 4 4
#> 5 5 2
关于r - 合并列同时忽略 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64449108/