[R] Tables package - remove NAs and NaN

David Winsemius dwinsemius at comcast.net
Tue Apr 23 04:40:30 CEST 2013


On Apr 22, 2013, at 5:49 PM, Santosh wrote:

> Dear Rxperts,
> q <- data.frame(p=rep(c("A","B"),each=10,len=30),
> a=rep(c(1,2,3),each=10),id=seq(30),
> b=round(runif(30,10,20)),
> c=round(runif(30,40,70)))
> The operation below...
> tabular(((p=factor(p))*(a=factor(a))+1) ~ (N = 1) + (b + c)*
> (mean+sd),data=q)
> yields some rows of NAs and NaN as shown below
> 
>             b               c
> p a   N  mean  sd    mean  sd
> A 1   10 16.30 2.497 52.30  9.358
>   2    0   NaN    NA   NaN     NA
>   3   10 15.60 2.716 60.30  8.001
> B 1    0   NaN    NA   NaN     NA
>   2   10 15.40 2.366 57.70 10.414
>   3    0   NaN    NA   NaN     NA
>   All 30 15.77 2.473 56.77  9.601
> 
> How do I remove the rows having N=0 ?
> I would like the resulting table look like..
>             b               c
> p a   N  mean  sd    mean  sd
> A 1   10 16.30 2.497 52.30  9.358
>     3   10 15.60 2.716 60.30  8.001
> B  2   10 15.40 2.366 57.70 10.414
>   All 30 15.77 2.473 56.77  9.601

Here's a bit of a hack:

tabular( (`p a`=interaction(p,a, drop=TRUE, sep=" ")) ~ (N = 1) + (b + c)*
    (mean+sd),data=q)
                              
        b           c         
 p a N  mean sd     mean sd   
 A 1 10 12.8 0.7888 52.1 8.020
 B 2 10 16.3 3.0569 54.9 8.711
 A 3 10 14.6 3.7771 56.5 6.980

I have been rather hoping that Duncan Murdoch would have noticed the earlier thread, but maybe he can comment on whether there is a more direct route/

-- 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list