我有一些数据看起来像这样:
# order_date quantity
# 1 2021-01-01 54
# 2 2021-01-01 32
# 3 2021-01-02 42
# 4 2021-01-01 132
# 5 2021-01-01 56
# 6 2021-01-02 88
# 7 2021-01-08 99
# 8 2021-01-10 54
当我使用下面的代码:
df$week <- cut(as.Date(df$order_date), breaks="week")
我得到以下结果:
# order_date quantity week
# 1 2021-01-01 54 2020-12-28
# 2 2021-01-01 32 2020-12-28
# 3 2021-01-02 42 2020-12-28
# 4 2021-01-01 132 2020-12-28
# 5 2021-01-01 56 2020-12-28
# 6 2021-01-02 88 2020-12-28
# 7 2021-01-08 99 2021-01-04
# 8 2021-01-10 54 2021-01-04
由于我的数据从1/1/21开始,我希望周分组从1/1/21开始,而不是从12/28/2020(最近的星期日)开始。因此我的组如下所示:
# order_date quantity week
# 1 2021-01-01 54 2021-01-01
# 2 2021-01-01 32 2021-01-01
# 3 2021-01-02 42 2021-01-01
# 4 2021-01-01 132 2021-01-01
# 5 2021-01-01 56 2021-01-01
# 6 2021-01-02 88 2021-01-01
# 7 2021-01-08 99 2021-01-07
# 8 2021-01-10 54 2021-01-07
开放给其他库/语法。
3条答案
按热度按时间wlwcrazw1#
您可以在日期范围加上一周内使用
seq.Dat
。不需要软件包。**注:**R〉= 4.1。
elcex8rz2#
您可以使用
lubridate::floor_date
手动设置一周的第一天。数据
ppcbkaq53#
使用我的包
timeplyr
的方法,除非另有说明,否则总是使用开始日期来构建序列。time_summarisev()
内部使用findInterval()
。还支持多单元周聚合。