r-使用数据帧过滤数据帧-purr::map和dplyr::filter



我有一个具有一组参数的数据帧(params(,我想用(df(中的数据过滤一个数据帧,从而创建df的多个子集。

我的查询位于:

params <- expand.grid(category = c("Big","Small"),
Year = c(2017,2018,2019),
Month = c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")) 

我的数据帧是:

df <- data.frame(category =c("Foo", "Bah", "Foo", "Foo", "Bah", "Bah", "Bah", "Foo", "Foo", "Bah"),
year = c(2017, 2018, 2017, 2018, 2019, 2019, 2018, 2018, 2017, 2019),
month =c("Jan","Feb","Feb","Jan","Nov","Apr","Nov","Jan","May","May"))

我想知道这是否可以通过purrr::map2实现,但我发现它只适用于矢量?

你的意思是这样的吗?

purrr::pmap(params, ~dplyr::filter(df,category == ..1, year == ..2, month == ..3))

其在基R中可以用Map写入

Map(function(x, y, z) subset(df, category == x & year == y & month == z), 
params$category, params$Year, params$Month)

最新更新