R语言:基于Age变量过滤Position特定原子水平的技术咨询
基于Age过滤Position的实现方案
没问题,我来帮你搞定这个职位过滤的需求!先把规则再明确一遍,避免理解偏差:
- 无条件保留所有 Analyst 和 CEO 记录,不管Age是多少
- 对于 Analyst Level II、Ceo Level II、Manager II 这三个职位:
- 仅当Age ≥ 58时保留该记录
- Age < 58时直接移除
补全测试数据框
你提供的测试数据没写完,我先帮你补全(确保Age从50到69共20条,每个职位重复4次):
library(tibble) Test <- tibble( Age = 50:69, Position = rep(c("Analyst", "Analyst Level II", "CEO", "Manager II", "Ceo Level II"), each = 4) )
实现过滤逻辑
用dplyr包的filter()函数可以轻松实现这个规则,代码如下:
library(dplyr) filtered_Test <- Test %>% filter( # 第一组:不受年龄限制的职位 Position %in% c("Analyst", "CEO") | # 第二组:受年龄限制的职位,仅保留Age≥58的 (Position %in% c("Analyst Level II", "Ceo Level II", "Manager II") & Age >= 58) )
代码解释
这个逻辑用|(逻辑或)连接了两个条件组:
- 第一个条件
Position %in% c("Analyst", "CEO"):直接匹配不需要过滤的职位,全部保留 - 第二个条件是一个组合判断:先匹配需要过滤的三个职位,再加上
Age >= 58的限制,只有同时满足才保留
验证结果
比如查看Age=50-57的记录:
- Age=50的Analyst会被保留
- Age=50的Analyst Level II会被移除
- Age=58的Manager II会被保留
你可以直接打印filtered_Test来确认所有记录都符合规则~
内容的提问来源于stack exchange,提问作者aagaardist
相关产品推荐
相关产品推荐

