对比两个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
相关产品推荐
相关产品推荐

