You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用dplyr包如何筛选行并提取两列非NA值合并为单列

R dplyr实现两列NA互补取行值方案

核心需求

逐行按规则取值,最终输出仅含Column列的结果:

  • 行内Column1为NA时,取该行Column2的取值
  • 行内Column2为NA时,取该行Column1的取值
  • 给定测试数据集的预期输出取值依次为20、30、10、40

补全后的完整代码

直接替换原代码框架的空缺部分即可运行:

test_data %>% 
  select(Column1, Column2) %>% 
  mutate(Column = coalesce(Column1, Column2)) %>% 
  select(Column)

以上代码运行给定测试集后,输出结果完全匹配预期,Column列值依次为20、30、10、40。

实现说明

  • coalesce()是dplyr内置的专用函数,作用是按传入参数的顺序,返回第一个非NA的值,这里优先匹配Column1的非NA值,Column1为NA时自动取Column2的非NA值,完全贴合需求逻辑,写法最简洁。
  • 末尾的select(Column)用于移除原始的Column1、Column2列,仅保留最终生成的目标列,符合输出要求。

如果需要显式写条件判断,也可以用case_when()实现完全相同的效果,代码如下:

test_data %>% 
  select(Column1, Column2) %>% 
  mutate(Column = case_when(
    !is.na(Column1) ~ Column1,
    !is.na(Column2) ~ Column2
  )) %>% 
  select(Column)

内容的提问来源于stack exchange,提问作者AAA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:31:01