基于多条件计算diary14数据集活动时长的均值与标准差
解决方案
你需要先按activity和day分组统计单日活动时长,再基于这些单日数据计算均值和标准差,具体代码如下:
1. 先统计每个活动在不同日期的时长
library(dplyr) # 按活动类型+日期分组,计算每个组合的总时长(分钟) activity_day_data <- diary14 %>% group_by(activity, day) %>% summarise( duration_min = n() * 10, # 每个记录对应10分钟,数量×10得总分钟数 .groups = "drop" # 取消分组,得到扁平化的结果 )
2. 计算每个活动的时长均值与标准差
基于上面的单日时长数据,再按activity分组汇总统计:
activity_stats <- activity_day_data %>% group_by(activity) %>% summarise( avg_duration = mean(duration_min), sd_duration = sd(duration_min), .groups = "drop" )
也可以一步完成,无需中间变量:
diary14 %>% group_by(activity, day) %>% summarise(duration_min = n() * 10, .groups = "drop_last") %>% summarise( avg_duration = mean(duration_min), sd_duration = sd(duration_min), .groups = "drop" )
额外优化:给日期添加可读性标签
如果需要让结果更直观,可以先把day的数字转换成对应的日期类型:
diary14 <- diary14 %>% mutate(day_label = case_when( day == 1 ~ "weekdays", day == 2 ~ "saturday", day == 3 ~ "sunday" )) # 用标签分组统计 diary14 %>% group_by(activity, day_label) %>% summarise(duration_min = n() * 10, .groups = "drop_last") %>% summarise( avg_duration = mean(duration_min), sd_duration = sd(duration_min), .groups = "drop" )
内容的提问来源于stack exchange,提问作者Victoria
相关产品推荐
相关产品推荐

