如何通过变量对多个数据帧进行子集化?

How to subset multiple data frames by a variable?

我有一个名为“imps”的 R 数据集,其中包含多个估算数据集:

在每个数据框中,都有一个性别列(或变量)(其中 gender=1 或 gender=0)。

我想弄清楚是否有办法重新设置“imps”的子集,其中所有数据框仅包含根据 gender=1 或 gender=0 的观察结果。

如果我只选择其中一个数据框,我知道该怎么做,然后我可以从中 运行 子集函数(即):

imputed_data1 <- imps[[5]] #selecting the 5th imputed dataset

imputed_gender <- subset(imputed_data1, gender==1)

我的问题是我试图保留所有数据框(有数百个),但我想进入每个数据框并且只 select 观察 gender=1 或 gender= 0.

这可以吗?任何帮助将不胜感激。

我们可以用lapply

换行
imps1 <- lapply(imps, subset, subset = gender == 1)
imps0 <- lapply(imps, subset, subset = gender == 0)

或使用tidyverse

library(dplyr)
library(purrr)
imps1 <- map(imps, ~ .x %>%
                   filter(gender == 1))