Try converting to POSIXct:
> str(dts)
'POSIXlt', format: chr [1:10] "2003-04-15"
"2003-07-15" "2003-10-15"
"2004-04-15" "2004-07-15" "2004-10-15"
"2005-04-15" ...> dts
[1] "2003-04-15" "2003-07-15" "2003-10-15"
"2004-04-15" "2004-07-15"
"2004-10-15" "2005-04-15" "2005-07-15"
[9] "2005-10-15" "2006-04-15"> dts <- as.POSIXct(dts)
> dts
[1] "2003-04-15 EDT" "2003-07-15 EDT" "2003-10-15
EDT" "2004-04-15 EDT"
"2004-07-15 EDT" "2004-10-15 EDT"
[7] "2005-04-15 EDT" "2005-07-15 EDT" "2005-10-15
EDT" "2006-04-15 EDT"> diff(dts)
Time differences of 91, 92, 183, 91, 92, 182, 91, 92, 182
days>
On 7/23/06, Patrick Giraudoux <patrick.giraudoux@univ-fcomte.fr>
wrote:>
> Dear Listers,
>
> I have encountered a strange problem using diff() and POSIXt:
>
>
>
dts<-c("15/4/2003","15/7/2003","15/10/2003","15/04/2004","15/07/2004","15/10/2004","15/4/2005","15/07/2005","15/10/2005","15/4/2006")
> dts <- strptime(dts, "%d/%m/%Y")
> class(dts)
>
> [1] "POSIXt" "POSIXlt"
>
> diff(dts)
>
> Time differences of 7862400, 7948800, 15811200, 7862400, 7948800,
> 15724800, 7862400, 7948800, 0 secs
>
> In this case the result is not the one expected: expressed in seconds
> and not in days, and the difference between the two last dates is not 0.
>
> Now, if one use a vector of 9 dates only (whatever the date removed),
> things come well:
>
> diff(dts[-1])
>
> Time differences of 92, 183, 91, 92, 182, 91, 92, 182 days
>
> Also if one contrains dts to POSIXct
>
>
>
dts<-c("15/4/2003","15/7/2003","15/10/2003","15/04/2004","15/07/2004","15/10/2004","15/4/2005","15/07/2005","15/10/2005","15/4/2006")
> dts <- as.POSIXct(strptime(dts, "%d/%m/%Y"))
> diff(dts)
>
> Time differences of 91, 92, 183, 91, 92, 182, 91, 92, 182 days
>
> Any rational in that?
>
> Patrick
>
> ______________________________________________
> R-help@stat.math.ethz.ch 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
[[alternative HTML version deleted]]