[R] Still can't find missing data - How do I get NA in xtabs with factors?
Rolf Turner
r.turner at auckland.ac.nz
Wed Jun 3 02:39:58 CEST 2009
On 3/06/2009, at 12:03 PM, Farley, Robert wrote:
> The problem here is Table doesn't seem to have a way to weigh the
> data.
>
>> ToyData
> Data1 Data2 Data3 Weight
> 101 Sam Red Banana 1.1
> 102 Sam Green Banana 2.1
> 103 Sam Blue Orange 2.1
> 104 Fred Red Orange 2.1
> 105 Fred Green Guava 2.1
> 106 Fred Blue Guava 2.1
> 107 <NA> Red Pear 50.1
> 108 <NA> Green Pear 50.1
> 109 <NA> Blue <NA> 1000.2
>> with(ToyData,table(Data1, Data3, useNA = "ifany"))
> Data3
> Data1 Banana Guava Orange Pear <NA>
> Fred 0 2 1 0 0
> Sam 2 0 1 0 0
> <NA> 0 0 0 2 1
>> xtabs(Weight ~ Data1 + Data3, exclude=NULL, na.action=na.pass,
>> ToyData)
> Data3
> Data1 Banana Guava Orange Pear
> Fred 0.0 4.2 2.1 0.0 Data3
> Data1 Banana Guava Orange Pear NA
> Fred 0.0 4.2 2.1 0.0 0.0
> Sam 3.2 0.0 2.1 0.0 0.0
> NA 0.0 0.0 0.0 100.2 1000.2
> Sam 3.2 0.0 2.1 0.0
Why don't you just re-code your data replacing missing values (<NA>) in
your factors by the literal string "NA"?
E.g.:
revamp <- function(x){
if(!is.factor(x)) return(x)
l <- levels(x)
x <- as.character(x)
x[is.na(x)] <- "NA"
factor(x,levels=c(l,"NA"))
}
xxx <- as.data.frame(lapply(Toydata,revamp))
xtabs(Weight ~ Data1 + Data3, data=xxx)
Data3
Data1 Banana Guava Orange Pear NA
Fred 0.0 4.2 2.1 0.0 0.0
Sam 3.2 0.0 2.1 0.0 0.0
NA 0.0 0.0 0.0 100.2 1000.2
cheers,
Rolf Turner
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
More information about the R-help
mailing list