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]]
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]]
A matrix is for situations where every element is of the same class but your columns have different classes so use a data frame: DF <- data.frame(a = 11:15, b = letters[1:5], stringsAsFactors = FALSE) subset(DF, a %in% 11:13) subset(DF, a %in% c(0, 11:13)) # same Suggest you review the Introduction to R manual and look at ?data.frame, ?subset and ?"%in%" On 9/4/07, Cory Nissen <cnissen at akoyainc.com> wrote:> 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 at 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. >
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) 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 at 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 at 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. >