I was wondering if there was a way to realize 'beautiful' contingency table on R on multiple columns. I am not sure the terms I used are precise enough, so There is what I am looking for:
I start with an example of my data:
structure(list(Gender = c("Male", "Female", "Male", "Male", "Male",
"Male", "Male", "Male", "Male", "Male", "Male", "Female", "Male",
"Male", "Male", "Male", "Male", "Female", "Male", "Male", "Female",
"Male", "Male", "Male", "Male", "Male", "Female", "Female", "Male",
"Female"), Race = c("White", "Hispanic/Latino(a)", "White", "White",
"White", "White", "Black/African American", "Black/African American",
"White", "Hispanic/Latino(a)", "Hispanic/Latino(a)", "Black/African American",
"Hispanic/Latino(a)", "Black/African American", "White", "Hispanic/Latino(a)",
"Hispanic/Latino(a)", "White", "Hispanic/Latino(a)", "Hispanic/Latino(a)",
"White", "Black/African American", "White", "Hispanic/Latino(a)",
"White", "Hispanic/Latino(a)", "Hispanic/Latino(a)", "Hispanic/Latino(a)",
"Hispanic/Latino(a)", "White"), Age = structure(c(1L, 2L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 3L, 1L, 1L, 2L, 1L,
1L, 1L, 3L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L), levels = c("(10,30]",
"(30,50]", "(50,100]"), class = "factor")), row.names = c(7022L,
3223L, 447L, 6750L, 5255L, 9689L, 9263L, 3865L, 8891L, 6190L,
7438L, 6313L, 496L, 130L, 4771L, 4172L, 5150L, 4290L, 3960L,
3552L, 2609L, 4007L, 6725L, 520L, 8034L, 8672L, 7903L, 8693L,
9380L, 1257L), class = "data.frame")
Gender Race Age
7022 Male White (10,30]
3223 Female Hispanic/Latino(a) (30,50]
447 Male White (10,30]
6750 Male White (10,30]
5255 Male White (10,30]
9689 Male White (10,30]
I would like to create a contingency table that would give me a result like that:
Race
Age Gender Black/African American Hispanic/Latino(a) White
(10,30] Female 1 1 2
Male 2 6 7
(30,50] Female 0 2 1
Male 1 4 1
(50,100] Female 0 0 0
Male 1 0 1
I tried using table on three variable using:
table(df[,c('Age','Gender','Race')])
But I got the following result:
, , Age = (10,30]
Race
Gender Black/African American Hispanic/Latino(a) White
Female 1 1 2
Male 2 6 7
, , Age = (30,50]
Race
Gender Black/African American Hispanic/Latino(a) White
Female 0 2 1
Male 1 4 1
, , Age = (50,100]
Race
Gender Black/African American Hispanic/Latino(a) White
Female 0 0 0
Male 1 0 1
I also tried to use interaction:
table(interaction(df$Age, df$Gender), df$Race)
I got the following result:
Black/African American Hispanic/Latino(a) White
(10,30].Female 1 1 2
(30,50].Female 0 2 1
(50,100].Female 0 0 0
(10,30].Male 2 6 7
(30,50].Male 1 4 1
(50,100].Male 1 0 1
Which are not so bad, but still not as beautiful as I'd like.
I hope I was clear, Thanks you very much for your help!
or even