Dear Donald, I can't guarantee that there aren't other problems, but your call to update() is in error; you need
allmis <- update(allmis, white = recode(RACE, '1=1; else=0; ')) not allmis <- update(allmis, white <- recode(RACE, '1=1; else=0; ')) [The last ; in the recode specification is unnecessary, but should do no harm; as well, for a simple recode like this you might prefer ifelse() to recode().] Here's an example: --------- snip --------- > library(mitools) > library(car) > data(smi) > smi <- update(smi, sex=recode(sex, "0 = 'M'; 1 = 'F'")) > with(smi, table(sex, drkfre)) [[1]] drkfre sex Non drinker not in last wk <3 days last wk >=3 days last wk F 207 194 134 35 M 282 201 105 12 [[2]] drkfre sex Non drinker not in last wk <3 days last wk >=3 days last wk F 200 200 132 38 M 282 195 109 14 . . . attr(,"call") with.imputationList(smi, table(sex, drkfre)) ----------- snip ----------- I hope this helps, John ------------------------------ John Fox, Professor Department of Sociology McMaster University Hamilton, Ontario, Canada web: socserv.mcmaster.ca/jfox > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On > Behalf Of Donald Braman > Sent: May-28-08 2:21 PM > To: r-help@r-project.org > Subject: [R] manipulating multiply imputed data sets > > Hi folks, > > I have five imputed data sets and would like to apply the same > recoding routines to each. I could do this sort of thing pretty > easily in Stata using MIM, but I've decided to go cold turkey on other > stats packages as a incentive for learning more about R. Most of the > recoding is for nominal variables, like race, religion, urbanicity, > and the like. So, for example, to recode race for my first dataset, > inmi1, I would do the following: > > miset1$white <- recode(miset1$RACE, '1=1; else=0; ') > miset1$black <- recode(miset1$RACE, '2=1; else=0; ') > miset1$asian <- recode(miset1$RACE, '3=1; else=0; ') > miset1$hispanic <- recode(miset1$RACE, '4=1; else=0; ') > miset1$raceother <- recode(miset1$RACE, '5=1; else=0; ') > > I've tried a number of variations, e.g., on the following using recode > (from the car package) with imputationList (from the mitools package), > though without success: > > files.allmisets <- list.files(getwd(),pattern="miset*.csv$",full=TRUE) > allmis <- imputationList(lapply(files.allmisets, read.csv)) > allmis <- update(allmis, white <- recode(RACE, '1=1; else=0; ')) > > I've also tried some basic loops. I guess I'm also a bit confused as > to when R references the original object and when it creates a new > one. I suppose I could do this in Python and the use PyR, but I'd > really like to learn a bit more about how R syntax. > > Any help on this specific problem or general advice on manipulating > data in multiply imputed datasets in R would be much appreciated. > > -- > Donald Braman > http://www.law.gwu.edu/Faculty/profile.aspx?id=10123 > http://research.yale.edu/culturalcognition > http://ssrn.com/author=286206 > > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.