Hi! Is it possible to automatically construct a table like this: # treat B # improvement # + - #treat A improvement + 1 3 # - 2 1 From these data: pair <- c(1,1,2,2,3,3,4,4,5,5,6,6,7,7) # identification treat <- c(1,0,1,0,1,0,1,0,1,0,1,0,1,0) # treatament 1 (A) or 0 (B) impr <- c(1,0,1,0,1,0,0,1,0,1,0,0,1,1) # improvement 1 (yes) 0 (no) treatfac <- factor(treat) levels(treatfac)<-list("A"=1,"B"=0 ) imprfac <- factor(impr) levels(imprfac)<-list("+"=1,"-"=0) data.frame(pair,treatfac,imprfac) pair treatfac imprfac 1 1 A + 2 1 B - 3 2 A + 4 2 B - 5 3 A + 6 3 B - 7 4 A - 8 4 B + 9 5 A - 10 5 B + 11 6 A - 12 6 B - 13 7 A + 14 7 B + I tried some functions like table or even xtabs, but the results doesn't show the pairs combinations. Thanks in advance, Maur?cio Cardeal Federal University of Bahia, Brazil [[alternative HTML version deleted]]
Here's one way:> ddw <- reshape(dd, direction="wide", idvar="pair", timevar="treatfac") > names(ddw)[1] "pair" "imprfac.A" "imprfac.B"> xtabs(~ imprfac.A + imprfac.B, ddw)imprfac.B imprfac.A + - + 1 3 - 2 1 (reshape() is a bit of a pain to wrap one's mind around; possibly, the tidyversalists can come up with something easier.) With a bit stronger assumptions on the data set (all pairs complete and in same order for both treatments), there is also> table(A=imprfac[treatfac=="A"], B=imprfac[treatfac=="B"])B A + - + 1 3 - 2 1> On 08 Apr 2017, at 13:16 , Mauricio Cardeal <mcardeal at ufba.br> wrote: > > Hi! > > Is it possible to automatically construct a table like this: > > # treat B > # improvement > # + - > #treat A improvement + 1 3 > # - 2 1 > > From these data: > > pair <- c(1,1,2,2,3,3,4,4,5,5,6,6,7,7) # identification > treat <- c(1,0,1,0,1,0,1,0,1,0,1,0,1,0) # treatament 1 (A) or 0 (B) > impr <- c(1,0,1,0,1,0,0,1,0,1,0,0,1,1) # improvement 1 (yes) 0 (no) > > treatfac <- factor(treat) > levels(treatfac)<-list("A"=1,"B"=0 ) > imprfac <- factor(impr) > levels(imprfac)<-list("+"=1,"-"=0) > > data.frame(pair,treatfac,imprfac) > > pair treatfac imprfac > > 1 1 A + > 2 1 B - > 3 2 A + > 4 2 B - > 5 3 A + > 6 3 B - > 7 4 A - > 8 4 B + > 9 5 A - > 10 5 B + > 11 6 A - > 12 6 B - > 13 7 A + > 14 7 B + > > I tried some functions like table or even xtabs, but the results doesn't > show the pairs combinations. > > > Thanks in advance, > > > Maur?cio Cardeal > > Federal University of Bahia, Brazil > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.-- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
Thank you Peter! Great solutions! That's exactly what I was looking for. Maur?cio Cardeal Em 08/04/2017 09:11, peter dalgaard escreveu:> Here's one way: > >> ddw <- reshape(dd, direction="wide", idvar="pair", timevar="treatfac") >> names(ddw) > [1] "pair" "imprfac.A" "imprfac.B" >> xtabs(~ imprfac.A + imprfac.B, ddw) > imprfac.B > imprfac.A + - > + 1 3 > - 2 1 > > (reshape() is a bit of a pain to wrap one's mind around; possibly, the tidyversalists can come up with something easier.) > > With a bit stronger assumptions on the data set (all pairs complete and in same order for both treatments), there is also > >> table(A=imprfac[treatfac=="A"], B=imprfac[treatfac=="B"]) > B > A + - > + 1 3 > - 2 1 > > > >> On 08 Apr 2017, at 13:16 , Mauricio Cardeal <mcardeal at ufba.br> wrote: >> >> Hi! >> >> Is it possible to automatically construct a table like this: >> >> # treat B >> # improvement >> # + - >> #treat A improvement + 1 3 >> # - 2 1 >> >> From these data: >> >> pair <- c(1,1,2,2,3,3,4,4,5,5,6,6,7,7) # identification >> treat <- c(1,0,1,0,1,0,1,0,1,0,1,0,1,0) # treatament 1 (A) or 0 (B) >> impr <- c(1,0,1,0,1,0,0,1,0,1,0,0,1,1) # improvement 1 (yes) 0 (no) >> >> treatfac <- factor(treat) >> levels(treatfac)<-list("A"=1,"B"=0 ) >> imprfac <- factor(impr) >> levels(imprfac)<-list("+"=1,"-"=0) >> >> data.frame(pair,treatfac,imprfac) >> >> pair treatfac imprfac >> >> 1 1 A + >> 2 1 B - >> 3 2 A + >> 4 2 B - >> 5 3 A + >> 6 3 B - >> 7 4 A - >> 8 4 B + >> 9 5 A - >> 10 5 B + >> 11 6 A - >> 12 6 B - >> 13 7 A + >> 14 7 B + >> >> I tried some functions like table or even xtabs, but the results doesn't >> show the pairs combinations. >> >> >> Thanks in advance, >> >> >> Maur?cio Cardeal >> >> Federal University of Bahia, Brazil >> >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code.[[alternative HTML version deleted]]