我在 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/