0

我有一个日期为 2 个不同年份(2009 年和 2010 年)的数据集,并且希望每个日期都有相应的周数。

我的数据集与此类似:

  anim <- c(012,023,045,098,067)
  dob <- c("01-09-2009","12-09-2009","22-09-2009","10-10-2010","28-10-2010")
  mydf <- data.frame(anim,dob)
  mydf
    anim    dob
1   12   01-09-2009
2   23   12-09-2009
3   45   22-09-2009
4   98   10-10-2010
5   67   28-10-2010

我想在第三列中有变量“周”,每个日期都有相应的周数。

编辑:注意:第一周从 1 月 1 日开始,第二周从每年 1 月 8 日开始

任何帮助将不胜感激。

巴兹

4

3 回答 3

3

您对“一年中的一周”的定义

编辑:注意:第一周从 1 月 1 日开始,第二周从每年 1 月 8 日开始

不同于支持的标准strftime

%U
    Week of the year as decimal number (00–53) using Sunday as the first day 1 
    of the week (and typically with the first Sunday of the year as day 1 of 
    week 1). The US convention.
%W
    Week of the year as decimal number (00–53) using Monday as the first day 
    of week (and typically with the first Monday of the year as day 1 of week 
    1). The UK convention.

所以你需要根据一年中的日期来计算它。

mydf$week <- (as.numeric(strftime(as.POSIXct(mydf$dob, 
                                             format="%d-%m-%Y"), 
                                  format="%j")) %/% 7) + 1
于 2011-12-14T20:51:25.987 回答
0

发布 2011 答案

library(lubridate)
mydf$week <- week(mydf$week)

lubridate包对于像这样的日常任务是直截了当的。

于 2017-09-07T20:03:03.313 回答
0

如果您想计算您感兴趣的日期和一年中的第一天之间已经过去了多少周(或 7 天),无论它是在一年中的第一天是一周中的哪一天,以下是一个解决方案(floor_date从 lubridate 使用)。

mydf$weeks <- difftime(mydf$dob, floor_date(mydf$dob, "year"), units = c("weeks")))
于 2021-10-21T17:46:32.877 回答