You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何按日期汇总数据集中每日跑步和睡眠的总时长

R语言按日期汇总指定活动耗时的实现方案

方案1:使用tidyverse生态实现(代码更简洁,推荐)

首先确保你已经安装了tidyverse包,执行以下代码即可完成转换:

# 加载依赖包
library(tidyverse)

# 替换df为你自己的原始数据框名称
output_df <- df %>%
  # 筛选出跑步、睡眠两类活动的记录
  filter(Activity %in% c("run", "sleep")) %>%
  # 按日期、活动类型分组,统计总耗时,此处统计的是分钟总和,需要小时的话把minutes改成hours即可
  group_by(date, Activity) %>%
  summarise(total = sum(minutes), .groups = "drop") %>%
  # 长表转宽表
  pivot_wider(
    id_cols = date,
    names_from = Activity,
    values_from = total
  ) %>%
  # 重命名为你需要的列名
  rename(
    time_running = run,
    time_sleeping = sleep
  )

如果需要无对应活动的日期显示0而非空值(NA),可以在pivot_wider的参数里添加values_fill = 0。

方案2:使用base R实现(无需安装额外依赖)

如果你不想安装第三方包,可以用R原生函数完成转换:

# 替换df为你自己的原始数据框名称
# 1. 筛选目标活动记录
sub_df <- df[df$Activity %in% c("run", "sleep"), ]
# 2. 按日期和活动分组求和
agg_df <- aggregate(minutes ~ date + Activity, sub_df, sum)
# 3. 长表转宽表
wide_df <- reshape(agg_df, idvar = "date", timevar = "Activity", direction = "wide")
# 4. 补全所有日期并重命名列
all_date_df <- data.frame(date = unique(df$date))
output_df <- merge(all_date_df, wide_df, by = "date", all.x = TRUE)
colnames(output_df) <- c("date", "time_running", "time_sleeping")

内容的提问来源于stack exchange,提问作者Bix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:57:00