首页 > 解决方案 > 如何根据列表过滤数据框的列?

问题描述

例如,我有一个数据框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使用列表而不是数据框。

感谢并感谢您的回复。

标签: rdataframedplyr

解决方案


实际上,这是一个答案,但并不酷

library(dplyr)

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

如果您想获得所有结果,请创建一个空列表


推荐阅读