r - 合并列以删除 NA

标签 r merge na

我在 R 中有一些列,对于每一行,其中只有一个值,其余的将是 NA。我想将它们合并到具有非 NA 值的一列中。有谁知道一个简单的方法来做到这一点。例如我可以如下:

data <- data.frame('a' = c('A','B','C','D','E'),
                   'x' = c(1,2,NA,NA,NA),
                   'y' = c(NA,NA,3,NA,NA),
                   'z' = c(NA,NA,NA,4,5))

所以我会

'a' 'x' 'y' 'z'  
 A   1   NA  NA  
 B   2   NA  NA  
 C  NA   3   NA  
 D  NA   NA  4  
 E  NA   NA  5

我想要得到

 'a' 'mycol'  
  A   1  
  B   2  
  C   3  
  D   4  
  E   5  

包含 NA 的列的名称会根据查询中较早的代码而变化,因此我无法显式调用列名称,但我有包含 NA 的列的列名称存储为向量,例如在此示例中cols <- c('x','y','z') ,因此可以使用 data[, cols] 调用列.

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

一个dplyr::coalesce基于的解决方案可以是:

data %>% mutate(mycol = coalesce(x,y,z)) %>%
         select(a, mycol)
#   a mycol
# 1 A     1
# 2 B     2
# 3 C     3
# 4 D     4
# 5 E     5 

数据

data <- data.frame('a' = c('A','B','C','D','E'),
                 'x' = c(1,2,NA,NA,NA),
                 'y' = c(NA,NA,3,NA,NA),
                 'z' = c(NA,NA,NA,4,5))

关于r - 合并列以删除 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563531/

相关文章:

R:外部函数调用中的 NA/NaN/Inf (arg 1)

R,dplyr : how to change the value in one column to NA based on NA values in other columns (using OR operator)

通过 RDCOMClient 从 R 运行 Excel 宏,错误 -2147418111

r - 大小不同的多个ggplots

python - 当两个工作簿有意重复数据时,如何合并两个工作簿?

javascript - jQuery 合并表行,但考虑以前的列

r - 在包括 NA 在内的两列中查找不相等/相同的行

r - 在 for 循环中打印为 PDF

r - 使用编译器包并抑制 "No visible binding for global variable"

c - 为什么我的 C 代码每次都不起作用?