From gregor.gorjanc at bfro.uni-lj.si  Tue Sep 26 01:59:47 2006
From: gregor.gorjanc at bfro.uni-lj.si (Gregor Gorjanc)
Date: Tue, 26 Sep 2006 01:59:47 +0200
Subject: [Rd] na.encode in format for Date and POSIXt classes
Message-ID: <45186D73.1020004@bfro.uni-lj.si>

Hello!

na.encode does not have any effect on format of NA values of Date and
POSIXct (POSIXlt?) "atomic" classes in a data.frame. Here is the example
(the same in R 2.3.1 and 2.5.0 (2006-09-19 r39409)):

testData <- data.frame(num=c(NA, 2.6),
                       int=c(1, NA),
                       fac=factor(c(NA, "abc")),
                       cha=c("a", NA),
                       dat=as.Date(c("1900-1-1", NA)),
                       POS=as.POSIXct(strptime(c("1900-1-1 01:01:01",
                                                 NA),
                                      format="%Y-%m-%d %H:%M:%S")))
testData$cha <- as.character(testData$cha)
testData
  num int  fac  cha        dat                 POS
1  NA   1 <NA>    a 1900-01-01 1900-01-01 01:01:01
2 2.6  NA  abc <NA>       <NA>                <NA>

format(testData)
  num int fac cha        dat                 POS
1  NA   1  NA   a 1900-01-01 1900-01-01 01:01:01
2 2.6  NA abc  NA       <NA>                <NA>
                        ^^^^                ^^^^

format(testData, na.encode=FALSE)
  num int  fac  cha        dat                 POS
1  NA   1 <NA>    a 1900-01-01 1900-01-01 01:01:01
2 2.6  NA  abc <NA>       <NA>                <NA>

format(testData, na.encode=TRUE)
  num int fac cha        dat                 POS
1  NA   1  NA   a 1900-01-01 1900-01-01 01:01:01
2 2.6  NA abc  NA       <NA>                <NA>
                        ^^^^                ^^^^

After a brief look into format.data.frame, format.POSIXct and
format.POSIXlt I notice that na.encode is not used at all in (last line
of format.POSIXlt)

 .Internal(format.POSIXlt(x, format, usetz))

but I get lost from this point forward. I guess that the same applies to
format.Date as this coerces Date to POSIXlt before formatting.

Additionally, I would suggest change in format help page for argument
na.encode. It says now

na.encode: logical: should 'NA' strings be encoded?

If I am not wrong, this applies only to non-numeric columns. Something
like the following might be more accurate:

na.encode: logical: should 'NA' strings be encoded (applies only to
non-numeric)?

-- 
Lep pozdrav / With regards,
    Gregor Gorjanc
----------------------------------------------------------------------
University of Ljubljana     PhD student
Biotechnical Faculty
Zootechnical Department     URI: http://www.bfro.uni-lj.si/MR/ggorjan
Groblje 3                   mail: gregor.gorjanc <at> bfro.uni-lj.si

SI-1230 Domzale             tel: +386 (0)1 72 17 861
Slovenia, Europe            fax: +386 (0)1 72 17 888

----------------------------------------------------------------------
"One must learn by doing the thing; for though you think you know it,
 you have no certainty until you try." Sophocles ~ 450 B.C.




[Rd] na.encode in format for Date and POSIXt classes
Gregor Gorjanc