[R] Compiling a contingency table of counts by case
Jacques VESLOT
jacques.veslot at good.ibl.fr
Fri Sep 22 11:32:14 CEST 2006
> dat <- read.delim("clipboard", sep=";")
> dat <- dat[order(dat$case, dat$name), ]
> res <- apply(combinations(nlevels(dat$name), 2), 1, function(x) with(dat[dat$name %in%
levels(dat$name)[x],], table(unlist(sapply(split(x, case), function(y) ifelse(length(y) == 2,
paste(y, collapse=""), NA))))))
> names(res) <- apply(combinations(nlevels(dat$name), 2), 1, function(x) paste(levels(dat$name)[x],
collapse="."))
> res
$Joe.John
11
1
$Joe.Karl
character(0)
$Joe.Mike
10 11
1 1
$Joe.Zoe
11
2
$John.Karl
character(0)
$John.Mike
10
1
$John.Zoe
11
1
$Karl.Mike
01
1
$Karl.Zoe
00
1
$Mike.Zoe
01 10 11
1 1 1
-------------------------------------------------------------------
Jacques VESLOT
CNRS UMR 8090
I.B.L (2ème étage)
1 rue du Professeur Calmette
B.P. 245
59019 Lille Cedex
Tel : 33 (0)3.20.87.10.44
Fax : 33 (0)3.20.87.10.31
http://www-good.ibl.fr
-------------------------------------------------------------------
Serguei Kaniovski a écrit :
> I have asked a similar question before but this time
> the problem is somewhat more involved. I have the
> following data:
>
> case;name;x
> 1;Joe;1
> 1;Mike;1
> 1;Zoe;1
> 2;Joe;1
> 2;Mike;0
> 2;Zoe;1
> 2;John;1
> 3;Mike;1
> 3;Zoe;0
> 3;Karl;0
>
> I would like to count the number of "case"
> in which any two "name"
>
> a. both have "x=1",
> b. the first has "x=0" - the second has "x=1",
> c. the first has "x=1" - the second has "x=0",
> d. both have "x=0",
>
> The difficulty is that the number of "names" and their
> identity changes from case to case.
>
> Thanks a lot for you help,
> Serguei Kaniovski
More information about the R-help
mailing list