将 52 周的数据拆分为 12 个月

问题描述

我为多名参与者(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

我没有故意删除日期列,所以你可以检查发生了什么。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...