跨记录汇总(均值),保持不变的变量

Summarize(mean) across records keeping the variables that don't change

我有一个数据框,其中包含来自各种设备的记录,这些设备测量温度和湿度等参数,我试图以 10 分钟的间隔对记录进行分组。相关示例:

id    datetime               hum     temp    room   
<chr> <S3: POSIXct>          <dbl>   <dbl>   <chr>  
AA    2021-11-26 18:49:34    31      24      living room
AA    2021-11-26 18:54:34    29      26      living room
BB    2021-11-26 18:49:34    31      24      bathroom
BB    2021-11-26 18:54:34    33      23      bathroom

我的代码是:

test %>% 
    group_by(id, datetime = cut(datetime, "10 min")) %>%
    summarise(across(hum:temp, ~ mean(.x)))

如何在汇总其他变量的同时保留房间变量(以及其他不在此示例中的变量)?

想要的结果:

id    datetime               hum     temp    room   
<chr> <S3: POSIXct>          <dbl>   <dbl>   <chr>  
AA    2021-11-26 18:49:00    30      25      living room
BB    2021-11-26 18:49:00    32      23.5    bathroom

我唯一的想法是先删除其他变量,然后再加入它们,但我认为可能有更简单的方法。

你是这个意思吗:只需将 room 或其他任何内容添加到 group_by 行:

df %>% 
  mutate(datetime = as.POSIXct(datetime)) %>% # This you may not need
  group_by(id, datetime = cut(datetime, "10 min"), room) %>%
  summarise(across(hum:temp, ~ mean(.x)), .groups = "keep")
 id    datetime            room          hum  temp
  <chr> <fct>               <chr>       <dbl> <dbl>
1 AA    2021-11-26 18:49:00 living room    30  25  
2 BB    2021-11-26 18:49:00 bathroom       32  23.5