如何将一列中有重复的弱日(来自不同年份)的列转换为一列中用R表示周的新列

  • 本文关键字:一列 转换 同年 新列 表示 r
  • 更新时间 :
  • 英文 :


大家好,我正在为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

最新更新