Frank E Harrell Jr wrote: > Martin Becker wrote: >> Dear Cory, >> >> I am not familiar with SAS, but is this what you are looking for? >> >> divisionTable <- matrix(c(1, "New England", >> 2, "Middle Atlantic", >> 3, "East North Central", >> 4, "West North Central", >> 5, "South Atlantic", >> 6, "East South Central", >> 7, "West South Central", >> 8, "Mountain", >> 9, "Pacific"), >> ncol=2, byrow=T) > > How about just divisionTable <- c('New England', 'Middle Atlantic', > ...) then factor(old, 1:9, divisionTable) ? > > Frank >
Of course, this solution is more elegant, but my intention was 1. to provide a solution which makes use of the exisiting object "divisionTable" 2. to reproduce the output from the working example (->conversion to character) Maybe I should have emphasized that I was quoting the existing definition of divisionTable from the original email (for the sake of providing self-contained code) and not introducing a unnecessarily complicated new definition of divisionTable. Regards, Martin >> a <- NULL >> a$divisionOld <- c(0,1,2,3,4,5) >> a$divisionNew <- >> as.character(factor(a$divisionOld,levels=divisionTable[,1],labels=divisionTable[,2])) >> >> >> a$divisionNew >> >> [1] NA "New England" "Middle Atlantic" [4] >> "East North Central" "West North Central" "South Atlantic" >> >> Kind regards, >> >> Martin >> >> >> Cory Nissen schrieb: >>> >>> Anybody? >>> >>> ________________________________ >>> >>> From: Cory Nissen >>> Sent: Tue 9/4/2007 9:30 AM >>> To: r-help@stat.math.ethz.ch >>> Subject: variable format >>> >>> >>> Okay, I want to do something similar to SAS proc format. >>> >>> I usually do this... >>> >>> a <- NULL >>> a$divisionOld <- c(1,2,3,4,5) >>> divisionTable <- matrix(c(1, "New England", >>> 2, "Middle Atlantic", >>> 3, "East North Central", >>> 4, "West North Central", >>> 5, "South Atlantic"), >>> ncol=2, byrow=T) >>> a$divisionNew[match(a$divisionOld, divisionTable[,1])] <- >>> divisionTable[,2] >>> >>> But how do I handle the case where... >>> a$divisionOld <- c(0,1,2,3,4,5) #no format available for 0, this >>> throws an error. >>> OR >>> divisionTable <- matrix(c(1, "New England", >>> 2, "Middle Atlantic", >>> 3, "East North Central", >>> 4, "West North Central", >>> 5, "South Atlantic", >>> 6, "East South Central", >>> 7, "West South Central", >>> 8, "Mountain", >>> 9, "Pacific"), >>> ncol=2, byrow=T) There are extra formats >>> available... this throws a warning. >>> >>> Thanks >>> >>> Cory >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help@stat.math.ethz.ch 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@stat.math.ethz.ch 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@stat.math.ethz.ch 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.