Как отфильтровать столбец фрейма данных на основе списка?

#r #dataframe #dplyr

Вопрос:

Например, у меня есть такой фрейм данных df1 , и я разделил его на 5 частей, как в z

 set.seed(123)
df1 <- data.frame(x = c("A","C","B","D","E","F","G","H","L","K","P","T") ,y = runif(12))
df1

p <- 5
n <- nrow(df1)
z <- split(df1, cummax(as.numeric(gl(p, n%/%p, n))))
 

И у меня есть другой фрейм данных df2 :

 df2 <- data.frame(
    emp_name = c("A","B","C","D","E"),
    salary = c(623.3,515.2,611.0,729.0,843.25))
 

Теперь я хочу отфильтровать df2$emp_name на основе x значений в z . Например, я хочу отфильтровать df2$emp_name на основе значений x в z[["1"]]

Если z бы был фрейм данных, я знаю, что могу использовать filter <- subset(df2, emp_name %in% z$x) , но я не знаю, как это сделать, где z список вместо фрейма данных.

Спасибо и ценю ваш ответ.

Ответ №1:

На самом деле, вот ответ, но не крутой

 library(dplyr)

for(vi in 1:length(z)){
  print(subset(df2, df2$emp_name %in% z[[vi]]$x))
}
 

Если вы хотите получить все результаты, составьте пустой список