r - 计算一年中的周数(0-53)

标签 r date-arithmetic week-number

我有一个包含位置和日期的数据集。我想将一年中的一周计算为数字(00-53),但使用星期四作为一周的第一天。数据如下所示:

  location <- c(a,b,a,b,a,b)
  date <- c("04-01-2013","26-01-2013","03-02-2013","09-02-2013","20-02-2013","03-03-2013")
  mydf <- data.frame(location, date)
  mydf

我知道有 strftime 函数用于计算一年中的一周,但只能使用星期一或星期日作为一周的第一天。
任何帮助将不胜感激。

最佳答案

只需将 4 添加到日期格式的值:

> mydf$Dt <- as.Date(mydf$date, format="%d-%m-%Y")
> weeknum <- as.numeric( format(mydf$Dt+3, "%U"))
> weeknum
[1] 1 4 5 6 7 9

这使用基于 0 的计数约定,因为这是 strftime 提供的,我们只是捎带该代码库,因此与 2013 年的情况一样,从周二开始的一年中的第一个星期五将是 1 周的结果。如果您想要基于 1 的约定,请将 1 添加到值中。 (从根本上说,日期格式的值是从“原点”开始的整数序列,因此它们不能真正识别年或周。添加 4 只会移动基础日期整数的引用系。)

编辑注释。根据 Gabor 的建议更改为添加三个策略。 .... 仍然没有解决如何处理上一年的最后一周的问题。

关于r - 计算一年中的周数(0-53),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15278128/

相关文章:

sql - 生成一年中特定一周的日期

MySQL如何填充范围内的缺失日期?

r - 如何减去年份?

r - 从 SpatialPolygons 和其他 sp 类中提取特征坐标

r - 用奇怪的名字定义/调用对象?

sql - ORACLE SQL 日期范围交集

php - 再次使用 PHP 中的周数

ios - NSDateComponents weekOfYear 崩溃

r - 在 R 中从列表转换为数字

R图R水平图