# Re: [R] Data manipulation for random intercept GLMM

From: Ben Bolker <bolker_at_ufl.edu>
Date: Fri, 02 May 2008 13:35:32 +0000 (UTC)

Giovanni Petris <GPetris <at> uark.edu> writes:

> > ## Example: Ratings of prime minister (Agresti, Table 12.1, p.494)
> > rating <- matrix(c(794, 86, 150, 570), 2, 2)
> > dimnames(rating) <- list(First = c("approve", "disapprove"),
> + Second = c("approve", "disapprove"))
> > rating
> Second
> First approve disapprove
> approve 794 150
> disapprove 86 570
>
[snip]
>
> > approval <- factor(c("Approve", "Disapprove"),
> + levels = c("Disapprove", "Approve"))
> > survey <- factor(c("First", "Second"))
> > tmp <- data.frame(approval = unlist(expand.grid(approval, approval)),
> + survey = rep(survey, each = 4))
> > rat.df <- cbind(tmp[rep(1:8, rep(rating, 2)), ],
> + id = factor(rep(1:sum(rating), 2)))
> > row.names(rat.df) <- NULL
>
> That does the job, since now I can call lmer:
>
> > m1 <- lmer(approval ~ survey + (1 | id), family = binomial, data = rat.df,
> + method = "Laplace")
>
[snip]

>
> Consider also that the next simplest example is the following, in
> which there are three items on a questionnaire and gender is included
> in the model:
>
> > ### Example: Support for legalizing abortion (Agresti, Table 10.13, p.441)
> > legalize <- matrix(c(342, 440, 26, 25, 6, 14, 21, 18, 11, 14,
> + 32, 47, 19, 22, 356, 457), nr = 2)
> > dimnames(legalize) <- list(Gender = c("Male", "Female"),
> + Three = c(111, 112, 211, 212, 121,
> + 122, 221, 222))
> > legalize
> Three
> Gender 111 112 211 212 121 122 221 222
> Male 342 26 6 21 11 32 19 356
> Female 440 25 14 18 14 47 22 457
>
> (Here '111' means (Yes, Yes, Yes) on the three items, etc.)
>
> How can I tranform elegantly this table into a dataframe that I can
> feed to lmer?
>

I would like to know the answers to this as well. I thought I was going to be able to get away with as.data.frame.table() [which is handy and underappreciated], but it doesn't expand counts.

I hope you get an elegant solution: in the meantime, I guess my advice is to try to write a reasonably general (if not necessarily absolutely elegant) function that you can supply your students with. If they have an expand.table() function, they won't care how complex it is internally ...

Ben Bolker

R-help_at_r-project.org mailing list
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. Received on Fri 02 May 2008 - 13:38:31 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 02 May 2008 - 19:30:33 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.