问题描述
我为多名参与者(G1、G2 等)完成了 data.frame
次练习
有不同类型的锻炼课程(Sup、Home 等),每种类型每周进行 2 次锻炼。
我有一个“周”变量,但我需要按月提供汇总数据,即将 52 周的数据拆分为 12 个月。
这是示例数据:
qdf = data.frame(id = rep(c("G1","G2","G3"),16),type = c(rep("Sup",24),rep("Home",24)),week = rep(c(1,1,2,3,4,4),2),session = c(rep("S1",3),rep("S2",rep("S3",rep("S4",rep("S5",rep("S6",rep("S7",rep("S8",rep("H1",rep("H2",rep("H3",rep("H4",rep("H5",rep("H6",rep("H7",rep("H8",3)))
我目前关于如何执行此操作的想法是,在按 id 分组后,为每个会话分配一个虚拟日期,从会话 S1 和 H1 的 01-01-2020 开始,然后根据日期。或者,添加额外的虚拟行,以便每个 week
有 7 天,然后分配日期并拆分。
我真的不知道如何开始使用这些可能的解决方案,或者是否没有更好的方法。
解决方法
如果您设置了一个起点,例如 2020-01-01,您可以执行以下操作:
qdf <- data.frame(id = rep(c("G1","G2","G3"),16),type = c(rep("Sup",24),rep("Home",24)),week = rep(c(1,1,2,3,4,4),2),session = c(rep("S1",3),rep("S2",rep("S3",rep("S4",rep("S5",rep("S6",rep("S7",rep("S8",rep("H1",rep("H2",rep("H3",rep("H4",rep("H5",rep("H6",rep("H7",rep("H8",3)))
library(lubridate)
qdf <- qdf %>% mutate(
date = ymd("2020-01-01") + weeks(week),month = month(date)
)
> head(qdf)
id type week session month date
1 G1 Sup 1 S1 1 2020-01-08
2 G2 Sup 1 S1 1 2020-01-08
3 G3 Sup 1 S1 1 2020-01-08
4 G1 Sup 1 S2 1 2020-01-08
5 G2 Sup 1 S2 1 2020-01-08
6 G3 Sup 1 S2 1 2020-01-08
我没有故意删除日期列,所以你可以检查发生了什么。