[R] reordering levels error
Please consider the following dataset: I want to reorder the levels by year but get the following error: Error in tapply(v, x, FUN, ...) : arguments must have same length I suspect that I need to add the levels before I melt the dataset but either way I have only use 'reorder' once before and can't figure out how it works..Thanks for any advice. winter - (list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L), BY2010 = c(0L, 0L, 460L, 1126L, 1755L, 11153L, 27998L, 56336L, 12486L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2009 = c(0L, 95L, 341L, 373L, 2859L, 5769L, 33263L, 98435L, 345339L, 622621L, 349958L, 531232L, 652803L, 345358L, 142991L, 148883L, 957501L, 32495L, 14862L, 7210L, 9765L, 6846L, 5067L, 6201L, 3045L, 106230L, 1183L, 195L, 6855L, 10261L, 4179L, 650L, 240L, 165L, 1189L, 863L, 562L, 1350L, 188L, 479L, 770L, 0L, 558L, 314L, 147L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2008 = c(0L, 0L, 77L, 124L, 159L, 2376L, 9480L, 17314L, 99574L, 323679L, 198211L, 93630L, 129183L, 111820L, 71260L, 35241L, 14020L, 20778L, 21694L, 15016L, 13400L, 9187L, 3607L, 2804L, 2417L, 5291L, 16216L, 898L, 558L, 709L, 972L, 61L, 372L, 3086L, 10108L, 4295L, 882L, 2593L, 36L, 233L, 243L, 0L, 70L, 272L, 308L, 134L, 40L, 0L, 0L, 0L, 0L, 0L, 0L), BY2007 = c(0L, 0L, 0L, 10775L, 4166L, 4958L, 16221L, 29401L, 34951L, 33188L, 146044L, 105007L, 185297L, 159682L, 207537L, 140694L, 128275L, 44274L, 27079L, 18928L, 10437L, 29984L, 18395L, 25846L, 4573L, 31995L, 3679L, 1043L, 9636L, 1524L, 827L, 7009L, 233L, 433L, 0L, 1103L, 257L, 128L, 66L, 70L, 535L, 429L, 97L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2006 = c(0L, 707L, 2390L, 8860L, 24430L, 40885L, 72792L, 205521L, 344493L, 662973L, 526409L, 631953L, 850491L, 842678L, 445987L, 558152L, 332032L, 174326L, 80601L, 48696L, 98571L, 103563L, 149469L, 78081L, 182478L, 2158L, 16566L, 4027L, 2655L, 1112L, 567L, 2595L, 4976L, 6336L, 294L, 1758L, 291L, 203L, 450L, 1098L, 788L, 195L, 532L, 0L, 0L, 0L, 0L, 0L, 0L, 167L, 0L, 0L, 0L), BY2005 = c(0L, 0L, 868L, 2044L, 4064L, 6049L, 9399L, 13304L, 45172L, 242155L, 476864L, 712534L, 1058409L, 2115018L, 1510342L, 1138213L, 333192L, 158820L, 94379L, 348882L, 39290L, 29701L, 47258L, 69837L, 7884L, 49338L, 22168L, 19397L, 19397L, 15984L, 8688L, 1200L, 1623L, 1291L, 1356L, 707L, 875L, 875L, 222L, 883L, 0L, 0L, 129L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c(week, BY2010, BY2009, BY2008, BY2007, BY2006, BY2005), class = data.frame, row.names = c(NA, -53L)) str(winter) w_melt - melt(winter,id=week,variable=year);str(w_melt) # Reorder DOESN'T WORK w_melt - reorder(w_melt$year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) pdf(wtest.pdf) ggplot(w_melt,aes(week,value/1000,colour=year,order= - as.numeric(year))) + geom_line(size=.75)+ theme_bw() + opts(title=Cumulative,axis.text.x = theme_text(angle=45,hjust=1)) + labs(y=Number of individuals X 1,000,x=week) dev.off() Felipe D. Carrillo Supervisory Fishery Biologist Department of the Interior US Fish Wildlife Service California, USA __ 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.
Re: [R] reordering levels error
On Aug 30, 2010, at 5:25 PM, Felipe Carrillo wrote: Please consider the following dataset: I want to reorder the levels by year but get the following error: Error in tapply(v, x, FUN, ...) : arguments must have same length I suspect that I need to add the levels before I melt the dataset but either way I have only use 'reorder' once before and can't figure out how it works..Thanks for any advice. winter - (list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, I believe you omitted a necessarystructure call above. 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L), BY2010 = c(0L, 0L, 460L, 1126L, 1755L, 11153L, 27998L, 56336L, 12486L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2009 = c(0L, 95L, 341L, 373L, 2859L, 5769L, 33263L, 98435L, 345339L, 622621L, 349958L, 531232L, 652803L, 345358L, 142991L, 148883L, 957501L, 32495L, 14862L, 7210L, 9765L, 6846L, 5067L, 6201L, 3045L, 106230L, 1183L, 195L, 6855L, 10261L, 4179L, 650L, 240L, 165L, 1189L, 863L, 562L, 1350L, 188L, 479L, 770L, 0L, 558L, 314L, 147L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2008 = c(0L, 0L, 77L, 124L, 159L, 2376L, 9480L, 17314L, 99574L, 323679L, 198211L, 93630L, 129183L, 111820L, 71260L, 35241L, 14020L, 20778L, 21694L, 15016L, 13400L, 9187L, 3607L, 2804L, 2417L, 5291L, 16216L, 898L, 558L, 709L, 972L, 61L, 372L, 3086L, 10108L, 4295L, 882L, 2593L, 36L, 233L, 243L, 0L, 70L, 272L, 308L, 134L, 40L, 0L, 0L, 0L, 0L, 0L, 0L), BY2007 = c(0L, 0L, 0L, 10775L, 4166L, 4958L, 16221L, 29401L, 34951L, 33188L, 146044L, 105007L, 185297L, 159682L, 207537L, 140694L, 128275L, 44274L, 27079L, 18928L, 10437L, 29984L, 18395L, 25846L, 4573L, 31995L, 3679L, 1043L, 9636L, 1524L, 827L, 7009L, 233L, 433L, 0L, 1103L, 257L, 128L, 66L, 70L, 535L, 429L, 97L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2006 = c(0L, 707L, 2390L, 8860L, 24430L, 40885L, 72792L, 205521L, 344493L, 662973L, 526409L, 631953L, 850491L, 842678L, 445987L, 558152L, 332032L, 174326L, 80601L, 48696L, 98571L, 103563L, 149469L, 78081L, 182478L, 2158L, 16566L, 4027L, 2655L, 1112L, 567L, 2595L, 4976L, 6336L, 294L, 1758L, 291L, 203L, 450L, 1098L, 788L, 195L, 532L, 0L, 0L, 0L, 0L, 0L, 0L, 167L, 0L, 0L, 0L), BY2005 = c(0L, 0L, 868L, 2044L, 4064L, 6049L, 9399L, 13304L, 45172L, 242155L, 476864L, 712534L, 1058409L, 2115018L, 1510342L, 1138213L, 333192L, 158820L, 94379L, 348882L, 39290L, 29701L, 47258L, 69837L, 7884L, 49338L, 22168L, 19397L, 19397L, 15984L, 8688L, 1200L, 1623L, 1291L, 1356L, 707L, 875L, 875L, 222L, 883L, 0L, 0L, 129L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c(week, BY2010, BY2009, BY2008, BY2007, BY2006, BY2005), class = data.frame, row.names = c(NA, -53L)) str(winter) w_melt - melt(winter,id=week,variable=year);str(w_melt) # Reorder Of course it DOESN'T WORK. The second argument is much shorter than the first. w_melt - reorder(w_melt $year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) ?reorder (Not that you would want to have it work for the reasons cited below.) Apparently all you want to do is reverse the ordering of w_melt$year, so assigning the output of reorder to what used to be a full dataframe is going to create havoc. w_melt - melt(winter,id=week,variable=year);str(w_melt) 'data.frame': 318 obs. of 3 variables: $ week : int 26 27 28 29 30 31 32 33 34 35 ... $ year : Factor w/ 6 levels BY2010,BY2009,..: 1 1 1 1 1 1 1 1 1 1 ... $ value: int 0 0 460 1126 1755 11153 27998 56336 12486 0 ... w_melt - melt(winter,id=week,variable=year);str(w_melt) 'data.frame': 318 obs. of 3 variables: $ week : int 26 27 28 29 30 31 32 33 34 35 ... $ year : Factor w/ 6 levels BY2010,BY2009,..: 1 1 1 1 1 1 1 1 1 1 ... $ value: int 0 0 460 1126 1755 11153 27998 56336 12486 0 ... levels(w_melt$year) [1] BY2010 BY2009 BY2008 BY2007 BY2006 BY2005 So try instead: w_melt$year - reorder(w_melt$year, 7-as.numeric(w_melt$year)) levels(w_melt$year) [1] BY2005 BY2006 BY2007 BY2008 BY2009 BY2010 You have not described what you are trying to show, so I have not proceeded any further. pdf(wtest.pdf) ggplot(w_melt,aes(week,value/1000,colour=year,order= - as.numeric(year))) + geom_line(size=.75)+ theme_bw() + opts(title=Cumulative,axis.text.x = theme_text(angle=45,hjust=1)) + labs(y=Number of individuals X 1,000,x=week) dev.off() Felipe D. Carrillo Supervisory Fishery Biologist Department of the Interior US Fish Wildlife Service California, USA __ 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
Re: [R] reordering levels error
Sorry about the structure thing, I basically want my levels on this order: w_melt - reorder(w_melt$year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) Here's the new dataset , please discard the reverse year, I was just trying it but it didn't do what I wanted and forgot to delete it. With ggplot2 I am trying to show the line with max value above and then show the other lines in the same order as the w_melt reorder code above. winter - structure(list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L), BY2010 = c(0L, 0L, 460L, 1126L, 1755L, 11153L, 27998L, 56336L, 12486L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2009 = c(0L, 95L, 341L, 373L, 2859L, 5769L, 33263L, 98435L, 345339L, 622621L, 349958L, 531232L, 652803L, 345358L, 142991L, 148883L, 957501L, 32495L, 14862L, 7210L, 9765L, 6846L, 5067L, 6201L, 3045L, 106230L, 1183L, 195L, 6855L, 10261L, 4179L, 650L, 240L, 165L, 1189L, 863L, 562L, 1350L, 188L, 479L, 770L, 0L, 558L, 314L, 147L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2008 = c(0L, 0L, 77L, 124L, 159L, 2376L, 9480L, 17314L, 99574L, 323679L, 198211L, 93630L, 129183L, 111820L, 71260L, 35241L, 14020L, 20778L, 21694L, 15016L, 13400L, 9187L, 3607L, 2804L, 2417L, 5291L, 16216L, 898L, 558L, 709L, 972L, 61L, 372L, 3086L, 10108L, 4295L, 882L, 2593L, 36L, 233L, 243L, 0L, 70L, 272L, 308L, 134L, 40L, 0L, 0L, 0L, 0L, 0L, 0L), BY2007 = c(0L, 0L, 0L, 10775L, 4166L, 4958L, 16221L, 29401L, 34951L, 33188L, 146044L, 105007L, 185297L, 159682L, 207537L, 140694L, 128275L, 44274L, 27079L, 18928L, 10437L, 29984L, 18395L, 25846L, 4573L, 31995L, 3679L, 1043L, 9636L, 1524L, 827L, 7009L, 233L, 433L, 0L, 1103L, 257L, 128L, 66L, 70L, 535L, 429L, 97L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2006 = c(0L, 707L, 2390L, 8860L, 24430L, 40885L, 72792L, 205521L, 344493L, 662973L, 526409L, 631953L, 850491L, 842678L, 445987L, 558152L, 332032L, 174326L, 80601L, 48696L, 98571L, 103563L, 149469L, 78081L, 182478L, 2158L, 16566L, 4027L, 2655L, 1112L, 567L, 2595L, 4976L, 6336L, 294L, 1758L, 291L, 203L, 450L, 1098L, 788L, 195L, 532L, 0L, 0L, 0L, 0L, 0L, 0L, 167L, 0L, 0L, 0L), BY2005 = c(0L, 0L, 868L, 2044L, 4064L, 6049L, 9399L, 13304L, 45172L, 242155L, 476864L, 712534L, 1058409L, 2115018L, 1510342L, 1138213L, 333192L, 158820L, 94379L, 348882L, 39290L, 29701L, 47258L, 69837L, 7884L, 49338L, 22168L, 19397L, 19397L, 15984L, 8688L, 1200L, 1623L, 1291L, 1356L, 707L, 875L, 875L, 222L, 883L, 0L, 0L, 129L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c(week, BY2010, BY2009, BY2008, BY2007, BY2006, BY2005), class = data.frame, row.names = c(NA, -53L)) winter w_melt - melt(winter,id=week,variable=year);str(w_melt) # Reorder DOESN'T WORK w_melt - reorder(w_melt$year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) pdf(wtest.pdf) ggplot(w_melt,aes(week,value/1000,colour)) + geom_line(size=.75)+ theme_bw() + opts(title=Cumulative,axis.text.x = theme_text(angle=45,hjust=1)) + labs(y=Number of individuals X 1,000,x=week) dev.off() Felipe D. Carrillo Supervisory Fishery Biologist Department of the Interior US Fish Wildlife Service California, USA - Original Message From: David Winsemius dwinsem...@comcast.net To: r-help Help r-h...@stat.math.ethz.ch Sent: Mon, August 30, 2010 2:49:15 PM Subject: Re: [R] reordering levels error On Aug 30, 2010, at 5:25 PM, Felipe Carrillo wrote: Please consider the following dataset: I want to reorder the levels by year but get the following error: Error in tapply(v, x, FUN, ...) : arguments must have same length I suspect that I need to add the levels before I melt the dataset but either way I have only use 'reorder' once before and can't figure out how it works..Thanks for any advice. winter - (list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, I believe you omitted a necessarystructure call above. 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L), BY2010 = c(0L, 0L, 460L, 1126L, 1755L, 11153L, 27998L, 56336L, 12486L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2009 = c(0L, 95L, 341L, 373L, 2859L, 5769L, 33263L, 98435L, 345339L, 622621L, 349958L, 531232L, 652803L, 345358L, 142991L, 148883L, 957501L, 32495L, 14862L, 7210L, 9765L, 6846L, 5067L, 6201L, 3045L, 106230L, 1183L, 195L, 6855L, 10261L
Re: [R] reordering levels error
On Aug 30, 2010, at 6:09 PM, Felipe Carrillo wrote: Sorry about the structure thing, I basically want my levels on this order: w_melt - reorder(w_melt $year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) Here's the new dataset , please discard the reverse year, I was just trying it but it didn't do what I wanted and forgot to delete it. With ggplot2 I am trying to show the line with max value above and then show the other lines in the same order as the w_melt reorder code above. I cannot parse that into English ... too many references to undefined items and indefinite pronouns to arrive at a meaningful expanded sentence. Max value above? Other lines in order? Try your plotting with the simple modification offered below and then report back with more detail and fewer indefinite pronouns and vague as aboves. winter - structure(list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L), BY2010 = c(0L, 0L, 460L, 1126L, 1755L, 11153L, 27998L, 56336L, 12486L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2009 = c(0L, 95L, 341L, 373L, 2859L, 5769L, 33263L, 98435L, 345339L, 622621L, 349958L, 531232L, 652803L, 345358L, 142991L, 148883L, 957501L, 32495L, 14862L, 7210L, 9765L, 6846L, 5067L, 6201L, 3045L, 106230L, 1183L, 195L, 6855L, 10261L, 4179L, 650L, 240L, 165L, 1189L, 863L, 562L, 1350L, 188L, 479L, 770L, 0L, 558L, 314L, 147L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2008 = c(0L, 0L, 77L, 124L, 159L, 2376L, 9480L, 17314L, 99574L, 323679L, 198211L, 93630L, 129183L, 111820L, 71260L, 35241L, 14020L, 20778L, 21694L, 15016L, 13400L, 9187L, 3607L, 2804L, 2417L, 5291L, 16216L, 898L, 558L, 709L, 972L, 61L, 372L, 3086L, 10108L, 4295L, 882L, 2593L, 36L, 233L, 243L, 0L, 70L, 272L, 308L, 134L, 40L, 0L, 0L, 0L, 0L, 0L, 0L), BY2007 = c(0L, 0L, 0L, 10775L, 4166L, 4958L, 16221L, 29401L, 34951L, 33188L, 146044L, 105007L, 185297L, 159682L, 207537L, 140694L, 128275L, 44274L, 27079L, 18928L, 10437L, 29984L, 18395L, 25846L, 4573L, 31995L, 3679L, 1043L, 9636L, 1524L, 827L, 7009L, 233L, 433L, 0L, 1103L, 257L, 128L, 66L, 70L, 535L, 429L, 97L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2006 = c(0L, 707L, 2390L, 8860L, 24430L, 40885L, 72792L, 205521L, 344493L, 662973L, 526409L, 631953L, 850491L, 842678L, 445987L, 558152L, 332032L, 174326L, 80601L, 48696L, 98571L, 103563L, 149469L, 78081L, 182478L, 2158L, 16566L, 4027L, 2655L, 1112L, 567L, 2595L, 4976L, 6336L, 294L, 1758L, 291L, 203L, 450L, 1098L, 788L, 195L, 532L, 0L, 0L, 0L, 0L, 0L, 0L, 167L, 0L, 0L, 0L), BY2005 = c(0L, 0L, 868L, 2044L, 4064L, 6049L, 9399L, 13304L, 45172L, 242155L, 476864L, 712534L, 1058409L, 2115018L, 1510342L, 1138213L, 333192L, 158820L, 94379L, 348882L, 39290L, 29701L, 47258L, 69837L, 7884L, 49338L, 22168L, 19397L, 19397L, 15984L, 8688L, 1200L, 1623L, 1291L, 1356L, 707L, 875L, 875L, 222L, 883L, 0L, 0L, 129L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c(week, BY2010, BY2009, BY2008, BY2007, BY2006, BY2005), class = data.frame, row.names = c(NA, -53L)) winter w_melt - melt(winter,id=week,variable=year);str(w_melt) # Reorder DOESN'T WORK w_melt - reorder(w_melt $year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) Let's drop you misguided use of reorder and use the correct method for reversing the print order of a factor. (Let's also drop the misguided assignment of a factor to what is the name of hte entire dataset.) w_melt$year - factor(w_melt$year, levels= rev(levels(w_melt$year) ) ) # Should reverse the order pdf(wtest.pdf) ggplot(w_melt,aes(week,value/1000,colour)) + geom_line(size=.75)+ theme_bw() + opts(title=Cumulative,axis.text.x = theme_text(angle=45,hjust=1)) + labs(y=Number of individuals X 1,000,x=week) dev.off() Felipe D. Carrillo Supervisory Fishery Biologist Department of the Interior US Fish Wildlife Service California, USA - Original Message From: David Winsemius dwinsem...@comcast.net To: r-help Help r-h...@stat.math.ethz.ch Sent: Mon, August 30, 2010 2:49:15 PM Subject: Re: [R] reordering levels error On Aug 30, 2010, at 5:25 PM, Felipe Carrillo wrote: Please consider the following dataset: I want to reorder the levels by year but get the following error: Error in tapply(v, x, FUN, ...) : arguments must have same length I suspect that I need to add the levels before I melt the dataset but either way I have only use 'reorder' once before and can't figure out how it works..Thanks for any advice. winter - (list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, I believe you omitted a necessarystructure call above. 34L, 35L, 36L, 37L
Re: [R] reordering levels error
Hi: I don't know if this is exactly what you wanted, but here goes. I made a few adjustments in the data frame before calling ggplot(): # library(ggplot2) # Reorient the order in which variables appear winter - winter[, c(1, 7, 3, 6, 4, 5, 2)] # Get rid of second week 26 at the end winter2 - winter[-53, ] # Create an ordered factor for labeling the weeks wkord - c(26:52, 1:25) winter2$week - ordered(winter2$week, levels = wkord) # melt the data frame w - melt(winter2, id = 'week') # create ordered factor for year w$year - substring(as.character(w$variable), 3, 6) w$year - factor(w$year, levels = c(2005, 2009, 2006, 2008, 2007, 2010), ordered = TRUE) # x variable in ggplot() must be continuous for geom_line() to work g - ggplot(w,aes(x = wk, y = value/1000, colour = year)) # Plot with week numbers on x-axis, rotated and resized for presentation g + geom_line() + scale_x_continuous(breaks = 1:52, labels = levels(w$week)) + opts(axis.text.x = theme_text(angle = 90, vjust = 0.5, hjust = 1, size = 7)) HTH, Dennis On Mon, Aug 30, 2010 at 2:25 PM, Felipe Carrillo mazatlanmex...@yahoo.comwrote: Please consider the following dataset: I want to reorder the levels by year but get the following error: Error in tapply(v, x, FUN, ...) : arguments must have same length I suspect that I need to add the levels before I melt the dataset but either way I have only use 'reorder' once before and can't figure out how it works..Thanks for any advice. winter - (list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L), BY2010 = c(0L, 0L, 460L, 1126L, 1755L, 11153L, 27998L, 56336L, 12486L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2009 = c(0L, 95L, 341L, 373L, 2859L, 5769L, 33263L, 98435L, 345339L, 622621L, 349958L, 531232L, 652803L, 345358L, 142991L, 148883L, 957501L, 32495L, 14862L, 7210L, 9765L, 6846L, 5067L, 6201L, 3045L, 106230L, 1183L, 195L, 6855L, 10261L, 4179L, 650L, 240L, 165L, 1189L, 863L, 562L, 1350L, 188L, 479L, 770L, 0L, 558L, 314L, 147L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2008 = c(0L, 0L, 77L, 124L, 159L, 2376L, 9480L, 17314L, 99574L, 323679L, 198211L, 93630L, 129183L, 111820L, 71260L, 35241L, 14020L, 20778L, 21694L, 15016L, 13400L, 9187L, 3607L, 2804L, 2417L, 5291L, 16216L, 898L, 558L, 709L, 972L, 61L, 372L, 3086L, 10108L, 4295L, 882L, 2593L, 36L, 233L, 243L, 0L, 70L, 272L, 308L, 134L, 40L, 0L, 0L, 0L, 0L, 0L, 0L), BY2007 = c(0L, 0L, 0L, 10775L, 4166L, 4958L, 16221L, 29401L, 34951L, 33188L, 146044L, 105007L, 185297L, 159682L, 207537L, 140694L, 128275L, 44274L, 27079L, 18928L, 10437L, 29984L, 18395L, 25846L, 4573L, 31995L, 3679L, 1043L, 9636L, 1524L, 827L, 7009L, 233L, 433L, 0L, 1103L, 257L, 128L, 66L, 70L, 535L, 429L, 97L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2006 = c(0L, 707L, 2390L, 8860L, 24430L, 40885L, 72792L, 205521L, 344493L, 662973L, 526409L, 631953L, 850491L, 842678L, 445987L, 558152L, 332032L, 174326L, 80601L, 48696L, 98571L, 103563L, 149469L, 78081L, 182478L, 2158L, 16566L, 4027L, 2655L, 1112L, 567L, 2595L, 4976L, 6336L, 294L, 1758L, 291L, 203L, 450L, 1098L, 788L, 195L, 532L, 0L, 0L, 0L, 0L, 0L, 0L, 167L, 0L, 0L, 0L), BY2005 = c(0L, 0L, 868L, 2044L, 4064L, 6049L, 9399L, 13304L, 45172L, 242155L, 476864L, 712534L, 1058409L, 2115018L, 1510342L, 1138213L, 333192L, 158820L, 94379L, 348882L, 39290L, 29701L, 47258L, 69837L, 7884L, 49338L, 22168L, 19397L, 19397L, 15984L, 8688L, 1200L, 1623L, 1291L, 1356L, 707L, 875L, 875L, 222L, 883L, 0L, 0L, 129L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c(week, BY2010, BY2009, BY2008, BY2007, BY2006, BY2005), class = data.frame, row.names = c(NA, -53L)) str(winter) w_melt - melt(winter,id=week,variable=year);str(w_melt) # Reorder DOESN'T WORK w_melt - reorder(w_melt$year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) pdf(wtest.pdf) ggplot(w_melt,aes(week,value/1000,colour=year,order= - as.numeric(year))) + geom_line(size=.75)+ theme_bw() + opts(title=Cumulative,axis.text.x = theme_text(angle=45,hjust=1)) + labs(y=Number of individuals X 1,000,x=week) dev.off() Felipe D. Carrillo Supervisory Fishery Biologist Department of the Interior US Fish Wildlife Service California, USA __ 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. [[alternative HTML version deleted]]
Re: [R] reordering levels error
Thanks Dennis: I always seem to have a hard time defining levels. That's exactly what I needed. From: Dennis Murphy djmu...@gmail.com To: Felipe Carrillo mazatlanmex...@yahoo.com Cc: r-h...@stat.math.ethz.ch Sent: Mon, August 30, 2010 5:41:02 PM Subject: Re: [R] reordering levels error Hi: I don't know if this is exactly what you wanted, but here goes. I made a few adjustments in the data frame before calling ggplot(): # library(ggplot2) # Reorient the order in which variables appear winter - winter[, c(1, 7, 3, 6, 4, 5, 2)] # Get rid of second week 26 at the end winter2 - winter[-53, ] # Create an ordered factor for labeling the weeks wkord - c(26:52, 1:25) winter2$week - ordered(winter2$week, levels = wkord) # melt the data frame w - melt(winter2, id = 'week') # create ordered factor for year w$year - substring(as.character(w$variable), 3, 6) w$year - factor(w$year, levels = c(2005, 2009, 2006, 2008, 2007, 2010), ordered = TRUE) # x variable in ggplot() must be continuous for geom_line() to work g - ggplot(w,aes(x = wk, y = value/1000, colour = year)) # Plot with week numbers on x-axis, rotated and resized for presentation g + geom_line() + scale_x_continuous(breaks = 1:52, labels = levels(w$week)) + opts(axis.text.x = theme_text(angle = 90, vjust = 0.5, hjust = 1, size = 7)) HTH, Dennis On Mon, Aug 30, 2010 at 2:25 PM, Felipe Carrillo mazatlanmex...@yahoo.com wrote: Please consider the following dataset: I want to reorder the levels by year but get the following error: Error in tapply(v, x, FUN, ...) : arguments must have same length I suspect that I need to add the levels before I melt the dataset but either way I have only use 'reorder' once before and can't figure out how it works..Thanks for any advice. winter - (list(week = c(26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L), BY2010 = c(0L, 0L, 460L, 1126L, 1755L, 11153L, 27998L, 56336L, 12486L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2009 = c(0L, 95L, 341L, 373L, 2859L, 5769L, 33263L, 98435L, 345339L, 622621L, 349958L, 531232L, 652803L, 345358L, 142991L, 148883L, 957501L, 32495L, 14862L, 7210L, 9765L, 6846L, 5067L, 6201L, 3045L, 106230L, 1183L, 195L, 6855L, 10261L, 4179L, 650L, 240L, 165L, 1189L, 863L, 562L, 1350L, 188L, 479L, 770L, 0L, 558L, 314L, 147L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2008 = c(0L, 0L, 77L, 124L, 159L, 2376L, 9480L, 17314L, 99574L, 323679L, 198211L, 93630L, 129183L, 111820L, 71260L, 35241L, 14020L, 20778L, 21694L, 15016L, 13400L, 9187L, 3607L, 2804L, 2417L, 5291L, 16216L, 898L, 558L, 709L, 972L, 61L, 372L, 3086L, 10108L, 4295L, 882L, 2593L, 36L, 233L, 243L, 0L, 70L, 272L, 308L, 134L, 40L, 0L, 0L, 0L, 0L, 0L, 0L), BY2007 = c(0L, 0L, 0L, 10775L, 4166L, 4958L, 16221L, 29401L, 34951L, 33188L, 146044L, 105007L, 185297L, 159682L, 207537L, 140694L, 128275L, 44274L, 27079L, 18928L, 10437L, 29984L, 18395L, 25846L, 4573L, 31995L, 3679L, 1043L, 9636L, 1524L, 827L, 7009L, 233L, 433L, 0L, 1103L, 257L, 128L, 66L, 70L, 535L, 429L, 97L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), BY2006 = c(0L, 707L, 2390L, 8860L, 24430L, 40885L, 72792L, 205521L, 344493L, 662973L, 526409L, 631953L, 850491L, 842678L, 445987L, 558152L, 332032L, 174326L, 80601L, 48696L, 98571L, 103563L, 149469L, 78081L, 182478L, 2158L, 16566L, 4027L, 2655L, 1112L, 567L, 2595L, 4976L, 6336L, 294L, 1758L, 291L, 203L, 450L, 1098L, 788L, 195L, 532L, 0L, 0L, 0L, 0L, 0L, 0L, 167L, 0L, 0L, 0L), BY2005 = c(0L, 0L, 868L, 2044L, 4064L, 6049L, 9399L, 13304L, 45172L, 242155L, 476864L, 712534L, 1058409L, 2115018L, 1510342L, 1138213L, 333192L, 158820L, 94379L, 348882L, 39290L, 29701L, 47258L, 69837L, 7884L, 49338L, 22168L, 19397L, 19397L, 15984L, 8688L, 1200L, 1623L, 1291L, 1356L, 707L, 875L, 875L, 222L, 883L, 0L, 0L, 129L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c(week, BY2010, BY2009, BY2008, BY2007, BY2006, BY2005), class = data.frame, row.names = c(NA, -53L)) str(winter) w_melt - melt(winter,id=week,variable=year);str(w_melt) # Reorder DOESN'T WORK w_melt - reorder(w_melt$year,c(BY2005,BY2009,BY2006,BY2008,BY2007,BY2010)) pdf(wtest.pdf) ggplot(w_melt,aes(week,value/1000,colour=year,order= - as.numeric(year))) + geom_line(size=.75)+ theme_bw() + opts(title=Cumulative,axis.text.x = theme_text(angle=45,hjust=1)) + labs(y=Number of individuals X 1,000,x=week) dev.off() Felipe D. Carrillo Supervisory Fishery Biologist Department of the Interior US Fish Wildlife Service California, USA __ R-help@r-project.org mailing list https