跨记录汇总(均值),保持不变的变量
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
我有一个数据框,其中包含来自各种设备的记录,这些设备测量温度和湿度等参数,我试图以 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