r - 合并列同时忽略 NA

标签 r dataframe merge

我想合并多个列。这是我的样本数据集的样子。

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.2cat.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/

相关文章:

merge - Jsonnet 中的 + 运算符和 std.mergePatch 有什么区别?

r - 在线条末端绘制标签

r - 在 R 中仅按组保存最后一个重复项

python - 如何使用 pandas 数据帧的正则表达式仅提取一个捕获组?

python - 逐个元素向下转换系列或数据框

java - JAVA中两个arraylist合并同一个父类

svn - 在 svn 中,我可以恢复更改并将其搁置以供以后使用吗?

r - 如何在R中的数据框中组合两列?

r - 获取两列的最小值

R:rvest提取innerHTML