r - 根据列中以逗号分隔的多个值过滤数据
问题描述
需要从表中过滤数据,其中我有一个输入表,如下所示
Emp_id = c(121,122,191,181,277,333)
salary = c(7838,8389,8940,9491,10042,10593)
Country = c("USA","USA","UK","USA","UK","USA")
df = data.frame(Emp_id,salary,Country)
我还有一个用逗号分隔的单个字符,如下所示:
Emp_lst = "121,191,181"
现在,我需要根据中的值过滤 df 行Emp_lst
。为此,我尝试了下面的代码,但我得到 0 行
library(dplyr)
df_flter = df %>% filter(Emp_id %in% Emp_lst)
上述代码中需要进行任何修改吗?
解决方案
我们可以在此处使用基于正则表达式的方法,将您的 CSV 员工 ID 列表转换为替代项:
regex <- paste0("^(?:", gsub(",", "|", Emp_lst, fixed=TRUE), ")$")
df[grepl(regex, df$Emp_id), ]
Emp_id salary Country
1 121 7838 USA
3 191 8940 UK
4 181 9491 USA
数据:
Emp_id <- c(121,122,191,181,277,333)
salary <- c(7838,8389,8940,9491,10042,10593)
Country <- c("USA","USA","UK","USA","UK","USA")
df <- data.frame(Emp_id,salary,Country)
Emp_lst <- "121,191,181"
推荐阅读
- cplex - CPLEX OPL 语法
- javascript - 如何使菜单向上扩展以适应新添加的条目
- signalr-hub - 信号器/js 404(未找到)
- javascript - 反应:Axios 不发布到数据库
- react-native - keycloak有时发送errorMessage如何解决android中的keyClock错误
- c++ - 有没有一种方法可以复制和粘贴数据,同时每次都增加该数据中的数字?
- android - 将 ViewPager2 与 TabLayout 和片段一起使用。能够交换片段,除非用户首先浏览到另一个选项卡,否则不会显示更新的片段
- vb.net - 有人可以帮我解决这个 SOAP 错误描述吗
- angular - 在 Nativescript 中显示带有标题的表格
- javascript - 如何使用 JavaScript / Node js 存储对象中不匹配的字符串