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

对比两个DataFrame提取差异值:将相同值设为NA(R语言)

提取DataFrame差异:保留df2差异值,其余设为NA

你可以基于已有的差异矩阵,直接对df2进行索引赋值操作,一步得到目标结果:

# 原始数据
df1 <- data.frame(
    Name = c("Alice", "Bob", "Charlie"),
    Age = c(25, 30, 22),
    City = c("New York", "San Francisco", "Los Angeles"),
    Score = c(95, 88, 92)
)

df2 <- data.frame(
    Name = c("Alice", "Bob", "Charlie"),
    Age = c(25, 30, 22),
    City = c("New York", "San Francisco", "Los Angeles"),
    Score = c(95, 100, 92)
)

# 获取差异矩阵
differences <- df1 != df2

# 生成目标数据框:仅保留df2中与df1有差异的值,其余设为NA
fixed_df <- df2
fixed_df[!differences] <- NA

关键逻辑说明

  • 以df2为模板创建fixed_df,确保列类型与原数据一致(比如字符列自动用NA_character_,数值列自动用NA_real_)。
  • !differences会生成一个与原数据框维度一致的逻辑矩阵,标记所有无差异的位置,将这些位置的值设为NA后,自然就只保留了df2中存在差异的数值。

运行后fixed_df的输出与你要求的格式完全一致:

> fixed_df
    Name Age City Score
1   <NA>  NA <NA>    NA
2   <NA>  NA <NA>   100
3   <NA>  NA <NA>    NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:34:58