[R] 3-way contingency table
David Winsemius
dwinsemius at comcast.net
Fri Apr 29 15:51:49 CEST 2011
On Apr 29, 2011, at 6:47 AM, Mathias Walter wrote:
> Hi,
>
> I have large data frame with many columns. A short example is given
> below:
>
>> dataH
> host ms01 ms31 ms33 ms34
> 1 cattle 4 20 9 6
> 2 sheep 4 3 4 5
> 3 cattle 4 3 4 5
> 4 cattle 4 3 4 5
> 5 sheep 4 3 5 5
> 6 goat 4 3 4 5
> 7 sheep 4 3 5 5
> 8 goat 4 3 4 5
> 9 goat 4 3 4 5
> 10 cattle 4 3 4 5
>
> Now I want to determine the the frequencies of every unique value in
> every column depending on the host column.
>
> It is quite easy to determine the frequencies in total with the
> following command:
>
>> dataH2 <- dataH[,c(2,3,4,5)]
>> table(as.matrix(dataH2), colnames(dataH2)[col(dataH2)],
>> useNA="ifany")
>
> ms01 ms31 ms33 ms34
> 3 0 9 0 0
> 4 10 0 7 0
> 5 0 0 2 9
> 6 0 0 0 1
> 9 0 0 1 0
> 20 0 1 0 0
>
> But I cannot manage to get it dependent on the host.
>
> I tried
>
>> xtabs(cbind(ms01, ms31, ms33, ms34) ~ ., dataH)
>
> and many other ways but I'm not stressful.
>
> I can get it for each column individually with
>
>> with(dataH, table(host, ms33))
>
> ms33
> host 4 5 9
> cattle 3 0 1
> deer 0 0 0
> goat 3 0 0
> human 0 0 0
> sheep 1 2 0
> tick 0 0 0
>
> But I do not want to repeat the command for every column. I need a
> single table which can be plotted as a balloon plot, for instance.
You have obviously not given us the full data from which your "correct
answer" was drawn, but see if this is going the right direction:
require(reshape)
> dataHm <- melt(dataH)
Using host as id variables
> xtabs(~host+value+variable, dataHm)
, , variable = ms01
value
host 3 4 5 6 9 20
cattle 0 4 0 0 0 0
goat 0 3 0 0 0 0
sheep 0 3 0 0 0 0
, , variable = ms31
value
host 3 4 5 6 9 20
cattle 3 0 0 0 0 1
goat 3 0 0 0 0 0
sheep 3 0 0 0 0 0
, , variable = ms33
value
host 3 4 5 6 9 20
cattle 0 3 0 0 1 0
goat 0 3 0 0 0 0
sheep 0 1 2 0 0 0
, , variable = ms34
value
host 3 4 5 6 9 20
cattle 0 0 3 1 0 0
goat 0 0 3 0 0 0
sheep 0 0 3 0 0 0
>
> Does anybody knows how to achieve this?
>
> --
> Kind regards,
> Mathias
>
> ______________________________________________
> R-help at r-project.org 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.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list