我在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 <- 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相关问答推荐

使用geom_rect的带有事件注释的时间序列图

R的法国工作日

使用gggplot 2在R中正确表示翻转堆叠条形图中的数据

从字符载体创建函数参数

如何将log 2刻度上的数字转换为自然log

R -模运算后的加法

以R表示的gglikert地块调整总数

R形式的一维数字线/箱形图样式图表

如何使用R中的dhrr函数将李克特量表的因子列从长转换为宽?

随机森林回归:下拉列重要性

如何在modelsummary中重命名统计数据?

使用整齐的计算(curl -curl )和杂音

将. xlsx内容显示为HTML表

我正在努力用R计算数据集中的中值逐步距离

try 将 colored颜色 编码添加到ggploly的标题中

将一个字符串向量调整为与其他字符串向量完全相同的大小

如何使用前缀作为匹配来连接数据帧?

使用gt_summary是否有一种方法来限制每个变量集进行配对比较?

用满足特定列匹配的另一行替换NA行

变异以按组从其他列创建具有最大和最小值的新列