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

如何在R中合并dataframe的两列并保留非NA值?

R语言实现

首先统一处理不规范的缺失值,再合并两列:

# 加载dplyr包(推荐方案)
library(dplyr)

# 预处理:把大小写不一致的缺失值转成标准NA
df[df == "Na"] <- NA

# 合并两列生成ab
df <- df %>%
  mutate(ab = coalesce(a, b)) %>%
  select(ab)

如果用base R实现,不需要额外安装依赖包:

df[df == "Na"] <- NA
df$ab <- ifelse(is.na(df$a), df$b, df$a)
df <- df["ab"]

Python Pandas实现

import pandas as pd
import numpy as np

# 预处理:统一缺失值格式
df = df.replace("Na", np.nan)

# 合并两列生成ab
df["ab"] = df["a"].combine_first(df["b"])

# 仅保留ab列
df = df[["ab"]]

说明

两种方案都利用了「每行最多只有一列存在非NA值」的前提,直接取每行的第一个非NA值即可实现需求,两列均为NA时返回的结果自然也是NA,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:39:03