I would like Cut() to follow the dateRange object that I defined below which starts on Sunday. It appears that the cut function starts on Saturday but I need it to start on Sunday

startDate = "2011-07-03"; endDate = "2011-8-07" ## starts on Sunday and ends on Sunday
dateRange <- seq(as.Date(startDate), to = as.Date(endDate), by = "day") ## This step is okay
dateRange
cut(dateRange, "weeks", ordered_result = TRUE) ## This I think where the problem is, it starts on the previous Saturday

Please let me know how I can have the output of the cut() provides the same number of bins as the test object DateRange.

Here is how I use the cut() function

dataSet <- runif(length(dateRange))
weeklyList <- split(dataSet, cut(dateRange, "weeks", ordered_result = TRUE)) ## This is how I use the cut() to bin my data.

Your technical expertise is greatly appreciated.

有帮助吗?

解决方案

As Frank says, the cut function is beginning on Monday, not Saturday. You can change this by using the start.on.monday option to cut.

> weeklyList <- split(dataSet, cut(dateRange, "weeks", ordered_result = TRUE, start.on.monday = FALSE))
> weeklyList
$`2011-07-03`
[1] 0.8208915 0.3073812 0.7427008 0.6856026 0.7733733 0.6258881 0.5222145

$`2011-07-10`
[1] 0.10739317 0.43350298 0.17186167 0.90407228 0.95883564 0.60972446 0.08929786

$`2011-07-17`
[1] 0.61130816 0.06738358 0.71603027 0.51067438 0.32632549 0.52515075 0.92037779

$`2011-07-24`
[1] 0.1391482 0.4253714 0.2754398 0.5745825 0.8776789 0.2088506 0.9773318

$`2011-07-31`
[1] 0.58218481 0.05610510 0.05400599 0.75924478 0.98367785 0.42556051 0.77251544

$`2011-08-07`
[1] 0.5907571

其他提示

Instead of using "weeks", can you use "7" like this?

weeklyList <- split (dataSet, cut(dateRange, 7, ordered_result=T))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top