you can do this work:
> # from ?ftable > r <- ftable(Titanic, row.vars = 1:3) > r Survived No Yes Class Sex Age 1st Male Child 0 5 Adult 118 57 ... snip ... Female Child 0 0 Adult 3 20 > > # long format > as.data.frame(r) Class Sex Age Survived Freq 1 1st Male Child No 0 2 2nd Male Child No 0 3 3rd Male Child No 35 ... snip ... 30 2nd Female Adult Yes 80 31 3rd Female Adult Yes 76 32 Crew Female Adult Yes 20 > > # wide format, but do not care the col name > data.frame(expand.grid(rev(attr(r, "row.vars"))), unclass(r)) Age Sex Class X1 X2 1 Child Male 1st 0 5 2 Adult Male 1st 118 57 3 Child Female 1st 0 1 ... snip ... 14 Adult Male Crew 670 192 15 Child Female Crew 0 0 16 Adult Female Crew 3 20 > > # using reshape2 library > library(reshape2) > dcast(as.data.frame(r), as.formula(paste(paste(names(attr(r, "row.vars")), collapse="+"), "~", paste(names(attr(r, "col.vars")))))) Using Freq as value column: use value_var to override. Class Sex Age No Yes 1 1st Male Child 0 5 2 1st Male Adult 118 57 3 1st Female Child 0 1 ... snip ... 14 Crew Male Adult 670 192 15 Crew Female Child 0 0 16 Crew Female Adult 3 20
source share