在R语言中基于两列匹配结果添加新列(优先使用dplyr)
基于dplyr的解决方案
首先需要明确:Au列是数值类型,Au_ppb列是字符类型(包含">3"这类特殊格式值),直接比较会因类型不匹配出错,所以先将Au转为字符型再做匹配。
方法1:使用ifelse
library(dplyr) df <- df %>% mutate(newcol = ifelse(as.character(Au) == Au_ppb, "EQUAL", "NOT EQUAL"))
方法2:使用case_when(逻辑更清晰,适合扩展多条件场景)
library(dplyr) df <- df %>% mutate(newcol = case_when( as.character(Au) == Au_ppb ~ "EQUAL", TRUE ~ "NOT EQUAL" ))
运行结果
执行代码后得到的数据集如下:
# A tibble: 5 × 4 Sample Au Au_ppb newcol <dbl> <dbl> <chr> <chr> 1 3000 0.2 0.2 EQUAL 2 3001 0.2 >3 NOT EQUAL 3 3002 0.2 0.2 EQUAL 4 3003 0.2 0.2 EQUAL 5 3004 0.3 1 NOT EQUAL
说明
通过as.character(Au)将数值型的Au转为字符型,和Au_ppb做字符串精确匹配,完全符合要求的判断逻辑:两列值一致时标记EQUAL,不一致时标记NOT EQUAL。
内容的提问来源于stack exchange,提问作者Rnoobie
相关产品推荐
相关产品推荐

