大家好,我正在为R论文代码中的一个步骤而奋斗。我有一个专栏";日期";从2019-01-01到2020-12-30,但是我在同一天有多个行条目。我基本上想创建一个新列,说明它所属的行条目所在的一年中的星期。因为我有2年的时间,我希望这些周是累积的,所以2019年有52周,2020年的第一周是53周,2020的第二周是54周,以此类推。最后我应该有104周。我的数据集有82个变量,但重要的是以下变量:
date plays.id name
2019-01-01 123 "Sunflower - Spider Man"
2019-01-01 456 "Without me"
2019-01-01 678 "Fly High - Shaggy"
2019-01-02 3455 "WAP"
2019-01-02 789 "Thank u, next"
谢谢你的帮助!
我的例子中的一些随机数据:
r <- function(x) {abs(round(rnorm(x, 1000, 50)))}
dates = rep(seq(from=as.Date("2019-01-01"),to=as.Date("2021-01-01"), by=1),each = 4)
df <- data.frame(date = dates, plays.id = r(length(dates)))
使用floor_date()
和lubridate
,我们创建一个周变量,然后计算从未来几周到第一周的差异(以周为单位(:
require(lubridate)
df$week = floor_date(df$date, unit = "weeks")
df$week = as.numeric(1 + (df$week - df$week[1])/7)
> df[1:5,]
date plays.id week
1 2019-01-01 1045 1
2 2019-01-01 974 1
3 2019-01-01 1007 1
4 2019-01-01 949 1
5 2019-01-02 966 1
> df[2000:2005,]
date plays.id week
2000 2020-05-14 1002 72
2001 2020-05-15 1020 72
2002 2020-05-15 1034 72
2003 2020-05-15 1003 72
2004 2020-05-15 941 72
2005 2020-05-16 980 72