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 ______________________________________________ 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.