如何使用dplyr在R中的不同子集上运行一段代码

如何使用dplyr在R中的不同子集上运行一段代码,r,dplyr,R,Dplyr,我有一个必须修改的数据集。 我想为dplyr管道中的不同子集运行一段不同的代码。 数据处理ICU患者的血糖值。 看起来是这样的: dfavg <- df %>% group_by(patientid) %>% mutate(icuoutcome = ifelse(row_number() != n(), 0, icuoutcome)) %>% mutate(strata = days) %>% mutate(survtime = max(days)-

我有一个必须修改的数据集。 我想为dplyr管道中的不同子集运行一段不同的代码。 数据处理ICU患者的血糖值。 看起来是这样的:

dfavg <- df %>%
  group_by(patientid) %>%
  mutate(icuoutcome = ifelse(row_number() != n(), 0, icuoutcome)) %>%
  mutate(strata = days) %>%
  mutate(survtime = max(days)-days) %>%
  group_by(days, add = TRUE) %>%
  mutate(gly_mean = mean(glycaemia))
dfavg%
分组依据(患者ID)%>%
突变(icuoutcome=ifelse(行号()!=n(),0,icuoutcome))%>%
突变(地层=天数)%>%
变异(生存时间=最大(天)-天)%>%
分组依据(天,添加=真)%>%
突变(gly_平均值=平均值(血糖))
但是,我只在患者入住ICU的前5天需要此代码。 在此之后,我需要另一个代码运行6到15天。
我尝试使用过滤器(天我们可以
根据“天”分割数据,并在
列表
输出上应用相应函数的
列表

library(dplyr)
library(purrr)
split(df, df$days > 5) %>%
    map2(funslist, ~ .y(.x))

使用一个小的可重复的例子

data(mtcars)
split(mtcars$mpg, mtcars$vs) %>% 
     map2_dbl(list(mean, max), ~ .y(.x))

因此,我分割数据,列出该部分数据所需的所有单独函数,然后使用map2为该数据运行这些函数?我认为在一个dplyr管道?@JorandeBock中是不可能的。您可以创建一个函数列表,如
list(mean,max)
然后应用。因为我不知道要测试的第二个函数或示例数据,所以我不可能在这里编写。是否可以使用过滤器(days@JorandeBock是的,这是可能的,但是
map2_-dfr
将提供一个单一的data.frame输出