[R] timeDate & business day

Michael Toews mwtoews at sfu.ca
Tue Mar 13 05:00:02 CET 2007


> [1] 20050104 20050105 20050106 20050107 20050110 20050111 20050113 
> 20050114
>> ymd <- as.Date(as.character(ymd.int),"%Y%m%d")
>> ymd
> [1] "2005-01-04" "2005-01-05" "2005-01-06" "2005-01-07" "2005-01-10"
> [6] "2005-01-11" "2005-01-13" "2005-01-14"
>> class(ymd)
> [1] "Date"
>
> While the variable ymd is actually of class Date, the format is not 
> yyyymmdd but
> yyyy-mm-dd as one can see in the previous example.
> As Young, I do not see what I am missing here.
> Any hint would be appreciated.
>
> AA.
What happened in the beginning is that I had to parse the character into 
a Date-Time class ("Date", in this case as you correctly pointed out). 
POSIX is a kind of standard that (mainly Unix) computers use date 
formatters, such as %Y for a 4-digit year, and others. They are all 
listed in great detail in "?strptime" (which means "string parse time"). 
In this case the input parsing format pattern was "%Y%m%d". There were 
no spaces in-between each number.

When that class prints out, the default format is ISO 8601 ( see 
http://en.wikipedia.org/wiki/ISO_8601 ). When R prints the class "Date" 
to your screen, it decides to format it ISO 8601-style for you. If you 
want to see if differently, you can try:

format(ymd,"%Y/%d/%m")

The date is actually stored internally as an ordinal, somewhat like how 
MS Excel dates work. You can see how it works internally:

str(ymd)

Hopefully I've demystified some of this .. any other questions?
+mt



More information about the R-help mailing list