首页 > 解决方案 > 根据列中以逗号分隔的多个值过滤数据

问题描述

需要从表中过滤数据,其中我有一个输入表,如下所示

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)

上述代码中需要进行任何修改吗?

标签: rdplyr

解决方案


我们可以在此处使用基于正则表达式的方法,将您的 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"

推荐阅读