Q/KDB 中的周数

Week Number in Q/KDB

我希望将 date/week 映射到一年中的周数。

我想过减去年初,然后除以 7 - 但是它可能排列不正确。

e.g.
2020.01.02 -> Week 1
2020.01.06 -> Week 2

我建议使用以下功能:

weekOfYear: {1+floor (x-`week$"d" xbar"m"$x)%7}

这个函数

  1. 查找 1 月 1 日之前或 1 月 1 日之前的第一个星期一。 {(`week$"d" xbar"m"$x)}2020.01.01 returns 2019.12.30
  2. 然后找出 x 和第一个星期一
  3. 之间的天数差异
  4. 将差值除以 7 并加 1,即 returns 您要查找的结果

例如

weekOfYear 2019.12.31 2020.01.01 2020.01.02 2020.01.05 2020.01.06 2020.01.07

returns

53 1 1 1 2 2

只是为了建立 Antons 的好答案,您还可以使用 div 函数而不是将其设置为 flooring,它看起来像

{1 + (x - `week $ `date $ 12 xbar `month $ x) div 7}