[R] Changing date format

Jim Lemon jim at bitwrit.com.au
Tue Oct 7 12:01:44 CEST 2014


On Tue, 7 Oct 2014 11:51:34 AM Göran Broström wrote:
> On 2014-10-07 11:27, Jim Lemon wrote:
> > On Tue, 7 Oct 2014 10:32:42 AM Frederic Ntirenganya wrote:
> >> Dear All,
> >> 
> >> How can I change the format of date of day of the year ? for
> > 
> > example r
> > 
> >> (i.e. "17 Apr" rather than "108").
> >> 
> >> The following is the type of the dataset I have
> >> 
> >> head(Samaru)
> >> 
> >>    Year Start End Length
> >> 
> >> 1 1930   108 288    180
> >> 2 1931   118 288    170
> >> 3 1932   115 295    180
> >> 4 1933   156 294    138
> >> 5 1934   116 291    175
> >> 6 1935   134 288    154
> > 
> > Hi Frederic,
> > The easiest method I can think of is this:
> > 
> > Samaru$Start<-format(as.Date(
> > 
> >   paste(Samaru$Year,"01-01",sep="-"))+Samaru$Start,
> >   "%b %d")
> > 
> > Samaru$End<-format(as.Date(
> > 
> >   paste(Samaru$Year,"01-01",sep="-"))+Samaru$End,
> >   "%b %d")
> 
> In the package 'eha' I have a function 'toDate':
>  > require(eha)
>  > toDate(1930 + 108/365)
> 
> [1] "1930-04-19"
> 
> (Interestingly, we are all wrong; the correct answer seems to be
> "1930-04-18")
> 
>  > toDate
> 
> function (times)
> {
>      if (!is.numeric(times))
>          stop("Argument must be numeric")
>      times * 365.2425 + as.Date("0000-01-01")
> }
> 
> The 'inverse' function is 'toTime'.
> 
> Sometimes it misses by one day; not very important in my 
applications,
> but may be otherwise.
> 
Hi Goran,
You're correct.

 as.Date("Apr 19 1930","%b %d %Y") -
+ as.Date("Jan 1 1930","%b %d %Y")
Time difference of 108 days

The t

Samaru$Start<-format(as.Date(
 paste(Samaru$Year,"01-01",sep="-"))+Samaru$Start-1,"%b %d")
Samaru$End<-format(as.Date(
 paste(Samaru$Year,"01-01",sep="-"))+Samaru$End-1, "%b %d")

Jim



More information about the R-help mailing list