我有一个脉搏血氧测定值的数据集。连续20分钟测量一次。我想计算每个连续6小时窗口的中值。窗口不会重叠,因此这不是滚动中值计算。R代码能有效地做到这一点吗?整个数据集是多个患者和数天的数据;大约100万行。
tidyverse的lubridate库非常有趣。您可以使用floor_date函数找到6小时历元。
library(dplyr)
library(lubridate)
df<-tibble::tribble(
~date_time, ~pulse_ox,
"1/1/21 11:21.21", 97,
"1/2/21 11:34.34", 89
)
df_new<-df %>%
mutate(date_time_6_hour=floor_date(dmy_hms(date_time),"6 hours")) %>%
group_by(date_time_6_hour) %>%
summarize(median=median(pulse_ox))