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



我有一个必须修改的数据集。我想为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))

然而,我只需要在患者入住ICU的前5天使用此代码。在这之后,我需要另一个代码来运行第6到15天。我尝试使用过滤器(天<=5(,但随后我丢失了所有其他数据。我如何制作我的代码,使上面的代码在第1-5天运行,另一个代码在第6-15天运行,但都在同一数据集或同一管道中。我也想过不过滤,但我认为这是不可能的,也想过在有条件的情况下使用group_by(比如days<=5(。

提前感谢

我们可以基于"天"split数据,并在list输出上应用相应函数的list

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))

相关内容

最新更新