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

R语言:判断数据框列元素是否存在于另一列并生成新列

解决R语言中判断列值是否存在于另一列的问题

你的核心需求是:判断b1列的每个值是否在b2列的任意位置出现,存在则标记"YES",否则标记"NO"(包括NA值)。

原代码的问题

你写的代码有两处错误:

  1. 语法错误:ifelse的括号位置错误(多了一个右括号),且YES/NO没有加引号(R中字符串必须用引号包裹)
  2. 逻辑错误:df$b1 == df$b2是逐行对应位置比较,而非检查b1的值是否存在于整个b2列中

正确解法

基础R实现

使用%in%运算符(专门用于检查元素是否存在于目标向量中)结合ifelse:

df <- data.frame(
    b1 = c(2, 6, 3, 80, 4, 77, 1, 9, NA), 
    b2 = c(100, 3, 9, 102, 6, 12, 1, 7, 77)
)

df$new <- ifelse(df$b1 %in% df$b2, "YES", "NO")

tidyverse/dplyr实现

如果你习惯使用tidyverse生态,可以用case_when实现更清晰的逻辑分支:

library(dplyr)

df <- df %>%
  mutate(new = case_when(
    b1 %in% b2 ~ "YES",
    TRUE ~ "NO"  # 所有不满足条件的情况(包括NA)都标记为NO
  ))

运行结果

执行上述代码后,df会生成你期望的结果:

> df
   b1  b2  new
1   2 100   NO
2   6   3  YES
3   3   9  YES
4  80 102   NO
5   4   6   NO
6  77  12  YES
7   1   1  YES
8   9   7  YES
9  NA  77   NO

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:42:47