【发布时间】:2017-03-27 16:11:43
【问题描述】:
我希望根据他们的周标记我的数据。这是我的数据:
df2 <- structure(list(Order_Date = structure(c(16735, 16805, 16753,
16830, 17075, 17009, 17085, 16740, 16891, 16750, 16820, 16849,
16906, 16929, 16746, 16731, 16786, 16873, 16895, 16931), class = "Date")), .Names = "Order_Date", row.names = c(NA,
-20L), class = "data.frame")
我尝试根据周(第 0 周、第 1 周和....)来标记它们,并且我希望按周对我的数据进行分组
我试过这个:
# order by data
library (dplyr)
df2<- arrange(df2, Order_Date)
# label them by week
$df2$week <- cumsum(weekdays(df2$Order_Date) == "Friday")
它没有给我正确的结果,我有以下输出,这很奇怪
Order_Date week
1 2015-10-27 0
2 2016-01-05 0
3 2015-11-14 0
4 2016-01-30 0
5 2016-10-01 0
6 2016-07-27 0
7 2016-10-11 0
8 2015-11-01 0
9 2016-03-31 0
10 2015-11-11 0
11 2016-01-20 0
12 2016-02-18 0
13 2016-04-15 1
14 2016-05-08 1
15 2015-11-07 1
16 2015-10-23 2
17 2015-12-17 2
18 2016-03-13 2
19 2016-04-04 2
20 2016-05-10 2
理想情况下,我想要这样的输出:
Order_Date label
1 2015-10-23 0
2 2015-10-27 0
3 2015-11-01 1
4 2015-11-07 2
5 2015-11-11 2
6 2015-11-14 3
7 2015-12-17 8
8 2016-01-05 10
因为第 8 行出现在第 1 行之后的 10 周,但生成以下内容的解决方案是我的第二种选择,表明这些数据不在同一周:
Order_Date label
1 2015-10-23 0
2 2015-10-27 0
3 2015-11-01 1
4 2015-11-07 2
5 2015-11-11 2
6 2015-11-14 3
7 2015-12-17 4
8 2016-01-05 5
【问题讨论】:
-
你的预期输出是什么?
-
@akrun 我更新了问题,如果还不清楚请告诉我。
-
您为什么希望
cumsum(weekdays(df2$Order_Date) == "Friday")给您提供周数?它只会告诉您该列中恰好是星期五的日期的累积数量(但它们是无序的,并且不是每天或每周都被涵盖;如果您跳过一两个星期五怎么办?)。这与周数无关。 -
@smci 是的,我希望至少找到一个解决方案来找到同一周内的日期,请在问题底部查看我的替代理想输出。
-
然后使用 zoo 或 lubridate 中的星期函数。
标签: r date-arithmetic week-number