canochordo
canochordo

Reputation: 100

R: combine two 2-dimensional crosstabs

> t <- read.csv("data.csv", sep=';')
> t
     sex pacemaker  smoker
1 female        no   never
2 female        no   never
3   male        no   never
4   male        no  former
5   male       yes  former
6   male       yes  former
7 female       yes current
8 female       yes  former
9 female        no current
> xtabs(~smoker+sex, data=t)
              sex
smoker    female male
  current      2    0
  former       1    3
  never        2    1
> xtabs(~smoker+pacemaker, data=t)
         pacemaker
smoker    no yes
  current  1   1
  former   1   3
  never    3   0

How can I combine two 2-dimensional crosstabs in R ?

Desired output:

          |     sex      |  pacemaker
  smoker  | female male  |   no  yes
  current |    2    0    |    1   1
  former  |    1    3    |    1   3
  never   |    2    1    |    3   0

Upvotes: 3

Views: 520

Answers (1)

G5W
G5W

Reputation: 37661

I have renamed your data.frame to be df. This code should work for you.

cbind(xtabs(~smoker+sex, data=df), xtabs(~smoker+pacemaker, data=df))
        female male no yes
current      2    0  1   1
former       1    3  1   3
never        2    1  3   0

You might want to rename the pacemaker column headers.

colnames(XTab)[3:4] = c("Pacemaker_no", "Pacemaker_yes")
XTab
        female male Pacemaker_no Pacemaker_yes
current      2    0            1             1
former       1    3            1             3
never        2    1            3             0

Upvotes: 3

Related Questions