【发布时间】:2020-04-19 02:06:03
【问题描述】:
我有一个数据框,其中包含 2015-2019 年的日期。它看起来像这样:
date | week | value
2016-01-01 | 53 | 3
2016-01-02 | 53 | 7
2016-01-03 | 53 | 1
2016-01-04 | 1 | 9
2016-01-05 | 1 | 4
2016-01-06 | 1 | 8
2016-01-07 | 1 | 4
2016-01-08 | 1 | 5
2016-01-09 | 1 | 6
2016-01-10 | 1 | 20
.
.
.
2016-12-31 | 52 | 31
2017-01-01 | 52 | 2
2017-01-02 | 52 | 49
以上只是数据框的 sn-p,第一列包含 2015-2019 年的每个日期,第二列是日期所属的等周(使用 lubridate)。我正在尝试获取和分组日期,使其仅显示每个等周的第一个日期和最后一个日期,其中一个是:
2016-01-04 | 1 | 9
2016-01-10 | 1 | 20
这很简单,使用 dplyr 的 group_by(年和等周)然后按行号过滤。但是我在这里遇到的问题是,一年的最后几周会溢出到下一年,例如 2016 年的第 52 周。在这种情况下,我无法按年和周分组以获得第一行和最后一行我将在2016年底和2017年初有两组第52周。有没有办法获得每周的第一行和最后一行而无需查看年份。即只过滤每周的第一个条目和最后一个条目,注意这里有多个来自不同年份的第 1 周、第 2 周、第 3 周等等。理想情况下,它应该抛出这样的东西:
date | week | value
2016-01-01 | 53 | 3
2016-01-03 | 53 | 1
2016-01-04 | 1 | 9
2016-01-10 | 1 | 20
.
.
.
2016-12-31 | 52 | 31
2017-01-02 | 52 | 49
2017-01-03 | 1 | 34
2017-01-09 | 1 | 2
【问题讨论】:
-
你的意思是如果一周内年份发生变化,你想保留一年的最后一天以及一周的最后一天?
-
我认为这也是一个问题,所以我实际上决定使用 ISO 年和 ISO 周作为标准化来解决我上面的问题。例如,2017 年的第一周将被定义为 ISO 术语中的第 52 周。
标签: r