I have got part of the way to what I want by playing with a small example: > example2 ano census total.pop class 1 222 96 1131 11 2 222 1 1245 12 3 239 96 3921 11 4 239 1 4503 12 5 260 1 4218 11 6 269 1 1185 12 7 275 1 3555 11 8 308 96 948 12 9 349 96 2511 11 10 349 1 2808 12 > mexa2 = melt(example2, id = c("ano","census")) > mexa2 ano census variable value 1 222 96 total.pop 1131 2 222 1 total.pop 1245 3 239 96 total.pop 3921 4 239 1 total.pop 4503 5 260 1 total.pop 4218 6 269 1 total.pop 1185 7 275 1 total.pop 3555 8 308 96 total.pop 948 9 349 96 total.pop 2511 10 349 1 total.pop 2808 11 222 96 class 11 12 222 1 class 12 13 239 96 class 11 14 239 1 class 12 15 260 1 class 11 16 269 1 class 12 17 275 1 class 11 18 308 96 class 12 19 349 96 class 11 20 349 1 class 12 > cast(mexa2, ... ~ census) ano variable 1 96 1 222 total.pop 1245 1131 2 222 class 12 11 3 239 total.pop 4503 3921 4 239 class 12 11 5 260 total.pop 4218 NA 6 260 class 11 NA 7 269 total.pop 1185 NA 8 269 class 12 NA 9 275 total.pop 3555 NA 10 275 class 11 NA 11 308 total.pop NA 948 12 308 class NA 12 13 349 total.pop 2808 2511 14 349 class 12 11 > This is nearly what I want but I really want something like this: ano total.pop1 total.pop96 class1 class96 222 1245 1131 12 11 239 4503 3921 12 11 260 4218 NA 11 NA 269 1185 NA 12 NA 275 3555 NA 11 NA 308 NA 948 NA 12 349 2808 2511 12 11 Suggestions gratefully received! Regards, Murray Jorgensen -- Dr Murray Jorgensen http://www.stats.waikato.ac.nz/Staff/maj.html Department of Statistics, University of Waikato, Hamilton, New Zealand Email: maj at waikato.ac.nz majorgensen at ihug.co.nz Fax 7 838 4155 Phone +64 7 838 4773 wk Home +64 7 825 0441 Mobile 021 0200 8350
I have got part of the way to what I want by playing with a small example:> example2ano census total.pop class 1 222 96 1131 11 2 222 1 1245 12 3 239 96 3921 11 4 239 1 4503 12 5 260 1 4218 11 6 269 1 1185 12 7 275 1 3555 11 8 308 96 948 12 9 349 96 2511 11 10 349 1 2808 12> mexa2 = melt(example2, id = c("ano","census")) > mexa2ano census variable value 1 222 96 total.pop 1131 2 222 1 total.pop 1245 3 239 96 total.pop 3921 4 239 1 total.pop 4503 5 260 1 total.pop 4218 6 269 1 total.pop 1185 7 275 1 total.pop 3555 8 308 96 total.pop 948 9 349 96 total.pop 2511 10 349 1 total.pop 2808 11 222 96 class 11 12 222 1 class 12 13 239 96 class 11 14 239 1 class 12 15 260 1 class 11 16 269 1 class 12 17 275 1 class 11 18 308 96 class 12 19 349 96 class 11 20 349 1 class 12> cast(mexa2, ... ~ census)ano variable 1 96 1 222 total.pop 1245 1131 2 222 class 12 11 3 239 total.pop 4503 3921 4 239 class 12 11 5 260 total.pop 4218 NA 6 260 class 11 NA 7 269 total.pop 1185 NA 8 269 class 12 NA 9 275 total.pop 3555 NA 10 275 class 11 NA 11 308 total.pop NA 948 12 308 class NA 12 13 349 total.pop 2808 2511 14 349 class 12 11>This is nearly what I want but I really want something like this: ano total.pop1 total.pop96 class1 class96 222 1245 1131 12 11 239 4503 3921 12 11 260 4218 NA 11 NA 269 1185 NA 12 NA 275 3555 NA 11 NA 308 NA 948 NA 12 349 2808 2511 12 11 Suggestions gratefully received! Regards, Murray Jorgensen -- Dr Murray Jorgensen http://www.stats.waikato.ac.nz/Staff/maj.html Department of Statistics, University of Waikato, Hamilton, New Zealand Email: maj at waikato.ac.nz majorgensen at ihug.co.nz Fax 7 838 4155 Phone +64 7 838 4773 wk Home +64 7 825 0441 Mobile 021 0200 8350
On Oct 25, 2009, at 5:07 AM, Murray Jorgensen wrote:> I have got part of the way to what I want by playing with a small > example: > > > example2 > ano census total.pop class > 1 222 96 1131 11 > 2 222 1 1245 12 > 3 239 96 3921 11 > 4 239 1 4503 12 > 5 260 1 4218 11 > 6 269 1 1185 12 > 7 275 1 3555 11 > 8 308 96 948 12 > 9 349 96 2511 11 > 10 349 1 2808 12 > > mexa2 = melt(example2, id = c("ano","census")) > > mexa2 > ano census variable value > 1 222 96 total.pop 1131 > 2 222 1 total.pop 1245 > 3 239 96 total.pop 3921 > 4 239 1 total.pop 4503 > 5 260 1 total.pop 4218 > 6 269 1 total.pop 1185 > 7 275 1 total.pop 3555 > 8 308 96 total.pop 948 > 9 349 96 total.pop 2511 > 10 349 1 total.pop 2808 > 11 222 96 class 11 > 12 222 1 class 12 > 13 239 96 class 11 > 14 239 1 class 12 > 15 260 1 class 11 > 16 269 1 class 12 > 17 275 1 class 11 > 18 308 96 class 12 > 19 349 96 class 11 > 20 349 1 class 12 > > cast(mexa2, ... ~ census) > ano variable 1 96 > 1 222 total.pop 1245 1131 > 2 222 class 12 11 > 3 239 total.pop 4503 3921 > 4 239 class 12 11 > 5 260 total.pop 4218 NA > 6 260 class 11 NA > 7 269 total.pop 1185 NA > 8 269 class 12 NA > 9 275 total.pop 3555 NA > 10 275 class 11 NA > 11 308 total.pop NA 948 > 12 308 class NA 12 > 13 349 total.pop 2808 2511 > 14 349 class 12 11 > > > > This is nearly what I want but I really want something like this: > > ano total.pop1 total.pop96 class1 class96 > 222 1245 1131 12 11 > 239 4503 3921 12 11 > 260 4218 NA 11 NA > 269 1185 NA 12 NA > 275 3555 NA 11 NA > 308 NA 948 NA 12 > 349 2808 2511 12 11library(reshape) mexa2 = melt(example2, id = c("ano","census")) example2 <- read.table(textConnection("ano census total.pop class 1 222 96 1131 11 2 222 1 1245 12 3 239 96 3921 11 4 239 1 4503 12 5 260 1 4218 11 6 269 1 1185 12 7 275 1 3555 11 8 308 96 948 12 9 349 96 2511 11 10 349 1 2808 12"), header=T) cast(mexa2, ano ~ variable+census) ano total.pop_1 total.pop_96 class_1 class_96 1 222 1245 1131 12 11 2 239 4503 3921 12 11 3 260 4218 NA 11 NA 4 269 1185 NA 12 NA 5 275 3555 NA 11 NA 6 308 NA 948 NA 12 7 349 2808 2511 12 11 or cast(mexa2, ... ~ variable+census) -- David> > Suggestions gratefully received! > > Regards, Murray Jorgensen > > -- > Dr Murray Jorgensen http://www.stats.waikato.ac.nz/Staff/maj.html > Department of Statistics, University of Waikato, Hamilton, New Zealand > Email: maj at waikato.ac.nz majorgensen at ihug.co.nz Fax 7 838 4155 > Phone +64 7 838 4773 wk Home +64 7 825 0441 Mobile 021 0200 8350 > > ______________________________________________ > 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.David Winsemius, MD Heritage Laboratories West Hartford, CT
Hi Murray, You were very close. cast(mexa2, ... ~ variable + census) Should do the trick. -Ista On Sun, Oct 25, 2009 at 5:10 AM, Murray Jorgensen <maj at waikato.ac.nz> wrote:> I have got part of the way to what I want by playing with a small example: > >> example2 > > ? ano census total.pop class > 1 ?222 ? ? 96 ? ? ?1131 ? ?11 > 2 ?222 ? ? ?1 ? ? ?1245 ? ?12 > 3 ?239 ? ? 96 ? ? ?3921 ? ?11 > 4 ?239 ? ? ?1 ? ? ?4503 ? ?12 > 5 ?260 ? ? ?1 ? ? ?4218 ? ?11 > 6 ?269 ? ? ?1 ? ? ?1185 ? ?12 > 7 ?275 ? ? ?1 ? ? ?3555 ? ?11 > 8 ?308 ? ? 96 ? ? ? 948 ? ?12 > 9 ?349 ? ? 96 ? ? ?2511 ? ?11 > 10 349 ? ? ?1 ? ? ?2808 ? ?12 >> >> mexa2 = melt(example2, id = c("ano","census")) >> mexa2 > > ? ano census ?variable value > 1 ?222 ? ? 96 total.pop ?1131 > 2 ?222 ? ? ?1 total.pop ?1245 > 3 ?239 ? ? 96 total.pop ?3921 > 4 ?239 ? ? ?1 total.pop ?4503 > 5 ?260 ? ? ?1 total.pop ?4218 > 6 ?269 ? ? ?1 total.pop ?1185 > 7 ?275 ? ? ?1 total.pop ?3555 > 8 ?308 ? ? 96 total.pop ? 948 > 9 ?349 ? ? 96 total.pop ?2511 > 10 349 ? ? ?1 total.pop ?2808 > 11 222 ? ? 96 ? ? class ? ?11 > 12 222 ? ? ?1 ? ? class ? ?12 > 13 239 ? ? 96 ? ? class ? ?11 > 14 239 ? ? ?1 ? ? class ? ?12 > 15 260 ? ? ?1 ? ? class ? ?11 > 16 269 ? ? ?1 ? ? class ? ?12 > 17 275 ? ? ?1 ? ? class ? ?11 > 18 308 ? ? 96 ? ? class ? ?12 > 19 349 ? ? 96 ? ? class ? ?11 > 20 349 ? ? ?1 ? ? class ? ?12 >> >> cast(mexa2, ... ~ census) > > ? ano ?variable ? ?1 ? 96 > 1 ?222 total.pop 1245 1131 > 2 ?222 ? ? class ? 12 ? 11 > 3 ?239 total.pop 4503 3921 > 4 ?239 ? ? class ? 12 ? 11 > 5 ?260 total.pop 4218 ? NA > 6 ?260 ? ? class ? 11 ? NA > 7 ?269 total.pop 1185 ? NA > 8 ?269 ? ? class ? 12 ? NA > 9 ?275 total.pop 3555 ? NA > 10 275 ? ? class ? 11 ? NA > 11 308 total.pop ? NA ?948 > 12 308 ? ? class ? NA ? 12 > 13 349 total.pop 2808 2511 > 14 349 ? ? class ? 12 ? 11 >> > > This is nearly what I want but I really want something like this: > > ? ano ?total.pop1 total.pop96 ?class1 ?class96 > ? 222 ? ? ? ?1245 ? ? ? ?1131 ? ? ?12 ? ? ? 11 > ? 239 ? ? ? ?4503 ? ? ? ?3921 ? ? ?12 ? ? ? 11 > ? 260 ? ? ? ?4218 ? ? ? ? ?NA ? ? ?11 ? ? ? NA > ? 269 ? ? ? ?1185 ? ? ? ? ?NA ? ? ?12 ? ? ? NA > ? 275 ? ? ? ?3555 ? ? ? ? ?NA ? ? ?11 ? ? ? NA > ? 308 ? ? ? ? ?NA ? ? ? ? 948 ? ? ?NA ? ? ? 12 > ? 349 ? ? ? ?2808 ? ? ? ?2511 ? ? ?12 ? ? ? 11 > > Suggestions gratefully received! > > Regards, ?Murray Jorgensen > > -- > Dr Murray Jorgensen ? ? ?http://www.stats.waikato.ac.nz/Staff/maj.html > Department of Statistics, University of Waikato, Hamilton, New Zealand > Email: maj at waikato.ac.nz ? ?majorgensen at ihug.co.nz ? ? ?Fax 7 838 4155 > Phone ?+64 7 838 4773 wk ? ?Home +64 7 825 0441 ? Mobile 021 0200 8350 > > ______________________________________________ > 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. >-- Ista Zahn Graduate student University of Rochester Department of Clinical and Social Psychology http://yourpsyche.org