R 将52周的数据分为12个月
我有一个为多个参与者(G1、G2等)完成的训练课程的R 将52周的数据分为12个月,r,date,dummy-data,R,Date,Dummy Data,我有一个为多个参与者(G1、G2等)完成的训练课程的数据框架 有不同类型的锻炼课程(Sup、Home等),每种类型每周2次。 我有一个“week”变量,但我需要按月提供汇总数据,即获取52周的数据并将其拆分为12个月。 以下是示例数据: qdf = data.frame(id = rep(c("G1", "G2", "G3"), 16), type = c(rep("Sup",24)
数据框架
有不同类型的锻炼课程(Sup、Home等),每种类型每周2次。
我有一个“week”变量,但我需要按月提供汇总数据,即获取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,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4),2),
session = c(rep("S1",3), rep("S2", 3), rep("S3",3), rep("S4",3),
rep("S5",3), rep("S6", 3), rep("S7",3), rep("S8",3),
rep("H1",3), rep("H2", 3), rep("H3",3), rep("H4",3),
rep("H5",3), rep("H6", 3), rep("H7",3), rep("H8",3)))
我目前的想法是,在按id分组后,为每个会话分配一个虚拟日期,从01-01-2020开始,会话S1和H1,然后根据日期将一年分为几个月。或者,添加额外的虚拟行,使每个周有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,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4),2),
session = c(rep("S1",3), rep("S2", 3), rep("S3",3), rep("S4",3),
rep("S5",3), rep("S6", 3), rep("S7",3), rep("S8",3),
rep("H1",3), rep("H2", 3), rep("H3",3), rep("H4",3),
rep("H5",3), rep("H6", 3), rep("H7",3), 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
qdf头(qdf)
id类型周会话月日期
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
我没有故意删除日期列,以便您可以检查发生了什么。将(ISO)周映射到月取决于年份,不是通用的。您还有其他日期信息吗?@mauritserves每个参与者在52周内的不同时间开始。确切的日期并不重要。我将把第一个大约4.3个星期/ 30天分配给“1个月”等。作为替代,我可以做一些事情,例如QDF%%%突变(月份= CASE(星期)= 48~12,星期>=43~11”等,将4个或5个星期分组为一个月。如果我认为每个星期可以进一步分开,则会有一点准确性。(即S1至S8=第1个月),但这将需要大量代码行作为多个会话类型