在R中,假设我有一些Lubridate日期的向量:
> Date
"2012-01-01 UTC"
"2013-01-01 UTC"
Run Code Online (Sandbox Code Playgroud)
接下来,假设我想看看这几天的周数:
> week(Date)
1
1
Run Code Online (Sandbox Code Playgroud)
Lubridate太棒了!
但是等等......我正在处理一个包含10,000行数据的时间序列......数据跨越3年.
我一直在努力寻找实现这一目标的方法:
> result of awesome R code here
1
54
Run Code Online (Sandbox Code Playgroud)
问题是:是否有一种简洁的方法可以在Lubridate的多年内输出一周的周数列表?更直接的是,我希望第二年的第一周能够代表第54周.而第三年的第一周将作为第107周的代表,令人作呕.
到目前为止,我已经尝试了一些hackney方案,但似乎无法创造一些没有用透明胶带固定在一起的东西.任何建议将不胜感激.提前致谢.
ber*_*roe 13
要获取从特定日期到另一个日期的间隔,您可以减去...
如果tda是你的日期向量,那么
tda - min(tda)
Run Code Online (Sandbox Code Playgroud)
将是他们之间的秒数差异.
要在几周内取出单位:
(tda - min(tda))/eweeks(1)
Run Code Online (Sandbox Code Playgroud)
要从特定日期开始:
tda - ymd(19960101)
Run Code Online (Sandbox Code Playgroud)
这给出了从1996年到每个值的天数.
从那里,您可以按每周或每周的秒数除以.
(tda - ymd(19960101))/eweeks(1)
Run Code Online (Sandbox Code Playgroud)
要获得整数部分,并从2012年1月开始:
trunc((tda - ymd(20111225))/eweeks(1))
Run Code Online (Sandbox Code Playgroud)
测试数据:
tda = ymd(c(20120101, 20120106, 20130101, 20130108))
Run Code Online (Sandbox Code Playgroud)
输出:
1 1 53 54
Run Code Online (Sandbox Code Playgroud)
由于eweeks()现在已弃用,我想我会添加到@beroe 的答案中。
如果tda是您的日期向量,您可以通过以下方式获取周数:
weeknos <- (interval(min(tda), tda) %/% weeks(1)) + 1
Run Code Online (Sandbox Code Playgroud)
where%/%导致整数除法。( 5 / 3 = 1.667; 5 %/% 3 = 1)