如何在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
相关产品推荐
相关产品推荐

