R语言如何实现允许±1年误差的两个年龄变量比对校验
R实现带±1年容差的年龄字段一致性校验
校验规则说明
涉及两个年龄字段:
age:调研机构提供的基准数据集年龄字段agesurvey:自主调研问卷采集的年龄字段
两个字段差值在±1年范围内属于合理偏差,判定为数据一致;差值绝对值大于1判定为数据异常。
代码调整思路
你原有代码的判断条件age == agesurvey仅能识别完全相等的记录,替换为计算两个字段差值的绝对值、判断绝对值是否≤1即可覆盖所有合规场景。
可运行代码
library(dplyr) # 构造示例测试数据 df <- data.frame( age = c(18, 50, 41, 79), agesurvey = c(19, 50, 40, 79) ) # 执行一致性校验 check <- df %>% mutate( Agree = ifelse(abs(age - agesurvey) <= 1, "Correct", "Incorrect") ) # 输出校验结果统计 table(check$Agree)
结果说明
针对给出的4条测试数据:
- 18 vs 19:差值为1,判定为Correct
- 50 vs 50:差值为0,判定为Correct
- 41 vs 40:差值为-1,判定为Correct
- 79 vs 79:差值为0,判定为Correct
最终统计结果Correct计数为4,符合业务预期。
可选扩展:如果数据中存在年龄缺失值,可按需补充缺失值逻辑,比如单独给缺失值标记为"Missing",避免被误判为Incorrect:
check <- df %>% mutate( Agree = case_when( is.na(age) | is.na(agesurvey) ~ "Missing", abs(age - agesurvey) <= 1 ~ "Correct", TRUE ~ "Incorrect" ) )
内容的提问来源于stack exchange,提问作者af1766
相关产品推荐
相关产品推荐

