> Hadley, > > What's wrong with: > > dates <- structure(c(8516, 8544, 8568, 8596, 8609, 8666, 8701, 8750, > 8754, 8798, 8811, 8817, 8860, 8873, 8918, 8931, > 8966, 9020, 9034, 9056), class = "Date") > >
The problem is this: > as.Date(cut.Date(dates, "day")) [1] "1993-04-26" "1993-05-24" "1993-06-17" "1993-07-15" "1993-07-28" [6] "1993-09-23" "1993-10-28" "1993-12-16" "1993-12-20" "1994-02-02" [11] "1994-02-15" "1994-02-21" "1994-04-05" "1994-04-18" "1994-06-02" [16] "1994-06-15" "1994-07-20" "1994-09-12" "1994-09-26" NA i.e. the series isn't complete if there isn't an observation on every day - that NA on the end is worrying too. (And similarly with year there are too many breaks, although that is easily fixed) seq.Date(min(dates), max(dates), "days") works, but seq.Date(min(dates), max(dates), "years") does not - because I want years to start on the first day of the year - when you see 1994 on a graph you expect that it will refer to 1/1/94 not 26/4/94. So cut and seq each do a bit of what I need, but not enough. Combining the two comes pretty close: start <- as.Date(cut.Date(min(dates), "year")) end <- as.Date(cut.Date(max(dates), "year")) seq.Date(start, end, "years") but I need to always round the minimum down (floor) and the maximum up (ceiling). I need a method like: fullseq <- function (range, size) { seq( round_any(range[1], size, floor), round_any(range[2], size, ceiling), by = size) } that works with dates (round_any is from the reshape package) Hadley -- http://had.co.nz/ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.