# [R] contingency table

Marc Schwartz marc_schwartz at me.com
Tue Dec 20 21:43:01 CET 2011

```On Dec 20, 2011, at 12:36 PM, reena wrote:

> This is my list.
> obs1    obs2    exp1     exp2
>
> 3           8          725      875
> 0           0           58        70
> 3           7          435      525
> 10         7          754      910
> 0           1          145     175
>
> and i want result in contingency table as
>
> obs       3                8
> exp    725          875
>
> next table will be
>
> obs    0         0
> exp   58       70
>
> and so on...

Hi,

It's not clear what you intend to do with the data after restructuring, but creating a list of the 2x2 tables from each row seems a reasonable first step.

Thus, if your data above is contained in a data frame 'DF':

> DF
obs1 obs2 exp1 exp2
1    3    8  725  875
2    0    0   58   70
3    3    7  435  525
4   10    7  754  910
5    0    1  145  175

# Iterate over each row in DF, returning a 2x2 matrix from each

> lapply(seq(nrow(DF)), function(i) matrix(DF[i, ], 2, 2, byrow = TRUE))
[[1]]
[,1] [,2]
[1,] 3    8
[2,] 725  875

[[2]]
[,1] [,2]
[1,] 0    0
[2,] 58   70

[[3]]
[,1] [,2]
[1,] 3    7
[2,] 435  525

[[4]]
[,1] [,2]
[1,] 10   7
[2,] 754  910

[[5]]
[,1] [,2]
[1,] 0    1
[2,] 145  175

This gives you a list of 5 2x2 matrices, one from each row in DF. See ?lapply, ?seq and ?matrix.

HTH,

Marc Schwartz

```