你好,我想用lubridate得到一个日期序列
这不管用
seq(ymd('2012-04-07'),ymd('2013-03-22'),by=week(1))
基地指挥部
seq(as.Date('2012-04-7'),as.Date('2013-03-22'),'weeks')
确实如此,但我想知道是否有一个优雅的方式来做到这一点与lubridate。
编辑
请忽略:解决了我自己,所以只留给后代。很高兴有这个删除,如果必要的。
seq(ymd('2012-04-07'),ymd('2013-03-22'),by='weeks')
成功了
3条答案
按热度按时间voj3qocg1#
ymd
是一个 Package 器,用于解析日期字符串并返回POSIXct
对象。您只需要使用
?seq.POSIXt
(而不是lubridate
)中描述的标准术语来定义周威尔作品
照意愿
您可以将
lubridate
Period
类对象强制转换为difftime
,但这似乎没有必要dfty9e192#
这是一种坚持在
lubridate
的POSIXct
宇宙中的方法,并且不会将日期格式更改为基于R的POSIXt
。我避免在脚本中更改日期格式,因为我发现这是一个常见的引入错误(例如时区更改或丢失时间戳)的地方。使用%m+%
时遵循以下建议:R: adding 1 month to a date常规的
+
有时也可以工作,但%m+%
可以防止这样的错误:起初我很困惑,因为我认为
%m+
只是一种添加月份的方法,类似的lubridate
命令,如%y+%
等并不存在。但是,事实证明“m”并不代表“月份添加”。我最好的猜测是“魔术”=)6gpjuf903#
这可能对其他人有用,也可能没用,但我已经编写了一个更通用的函数,用于使用lubridate,base和timechange的组合来计算日期序列。它允许period或duration(base)算术。
创建于2023-03-28带有reprex v2.0.2