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

在R中判断多列字符串是否一致(含缺失值)

R语言:忽略缺失值筛选多字符串列存在差异的行

核心思路

对每一行的目标字符串列,先剔除缺失值(NA),再检查剩余值是否不全相同,满足该条件的行即为需要保留的差异行。


方法一:Base R实现

# 定义需要检查的变量列(所有以var开头的列)
target_vars <- grep("^var", names(df), value = TRUE)

# 逐行筛选存在差异的行
diff_result <- df[apply(df[target_vars], 1, function(row) {
  # 剔除当前行的NA值
  non_na_vals <- row[!is.na(row)]
  # 非NA值的唯一值数量大于1,说明存在差异
  length(unique(non_na_vals)) > 1
}), ]

# 查看结果
diff_result

方法二:dplyr(tidyverse)实现

适合习惯tidyverse语法的用户,代码更直观:

library(dplyr)

diff_result <- df %>%
  rowwise() %>%
  # 标记当前行是否存在非NA值差异
  mutate(has_difference = length(unique(na.omit(c_across(starts_with("var"))))) > 1) %>%
  # 筛选出存在差异的行
  filter(has_difference) %>%
  # 移除辅助标记列
  select(-has_difference)

# 查看结果
diff_result

结果说明

运行上述代码后,diff_result会返回包含id和所有变量列的数据集,仅保留那些存在非NA值差异的行,比如示例数据中的id=4、5、6行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:53:19