[R] Table and ftable
Peter Dalgaard
P.Dalgaard at biostat.ku.dk
Tue Sep 4 11:41:53 CEST 2007
David Barron wrote:
> There might be simpler ways, but you can certainly do this with the
> reshape package, like this:
>
> library(reshape)
> dta <- read.table("clipboard",header=TRUE)
>
> sic level area
> 1 a 211 2.4
> 2 b 311 2.3
> 3 b 322 0.2
> 4 b 322 0.5
> 5 c 100 3.0
> 6 c 100 1.5
> 7 c 242 1.5
> 8 d 222 0.2
>
>
> mlt.dta <- melt(dta)
> cst.dta <- cast(mlt.dta,sic~level,sum)
>
> sic 100 211 222 242 311 322
> 1 a NA 2.4 NA NA NA NA
> 2 b NA NA NA NA 2.3 0.7
> 3 c 4.5 NA NA 1.5 NA NA
> 4 d NA NA 0.2 NA NA NA
>
> Then just replace the NAs with 0s.
>
>
tapply() will do this too:
> with(d,tapply(area,list(sic,level), sum))
100 211 222 242 311 322
a NA 2.4 NA NA NA NA
b NA NA NA NA 2.3 0.7
c 4.5 NA NA 1.5 NA NA
d NA NA 0.2 NA NA NA
This has the same awkwardness of giving NA for empty cells, and there is
no easy way to circumvent it since the FUN of tapply is simply not
called for such cells.
Replacing NA by zero is a bit dangerous (albeit not in the present case)
since you can get an NA cell for more than one reason. A more careful
approach is like this:
> with(d,{t1 <- tapply(area,list(sic,level), sum)
t2 <- table(sic,level)
t1[t2==0] <- 0
t1} )
100 211 222 242 311 322
a 0.0 2.4 0.0 0.0 0.0 0.0
b 0.0 0.0 0.0 0.0 2.3 0.7
c 4.5 0.0 0.0 1.5 0.0 0.0
d 0.0 0.0 0.2 0.0 0.0 0.0
>
> HTH.
>
> David Barron
> On 9/4/07, Giulia Bennati <bennati at gmail.com> wrote:
>
>> Dear listmembers,
>> I have a little question: I have my data organized as follow
>>
>> sic level area
>> a 211 2.4
>> b 311 2.3
>> b 322 0.2
>> b 322 0.5
>> c 100 3.0
>> c 100 1.5
>> c 242 1.5
>> d 222 0.2
>>
>> where levels and sics are factors. I'm trying to obtain a matrix like this:
>>
>> level
>> 211 311 322 100 242 222
>> sic
>> a 2.4 0 0 0 0 0
>> b 0 2.3 0.7 0 0 0
>> c 0 0 0 4.5 1.5 0
>> d 0 0 0 0 0 0.2
>>
>> I tryed with table function as
>> table(sic,level) but i obteined only a contingency table.
>> Have you any suggestions?
>> Thank you very much,
>> Giulia
>>
>> ______________________________________________
>> R-help at stat.math.ethz.ch 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.
>>
>>
>
>
>
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list