[R] Add column to dataframe based on code in other column

Berend Hasselman bhh at xs4all.nl
Thu Aug 8 16:14:46 CEST 2013


On 08-08-2013, at 11:33, Dark <info at software-solutions.nl> wrote:

> Hi all,
> 
> I have a dataframe of users which contain US-state codes. 
> Now I want to add a column named REGION based on the state code. I have
> already done a mapping:
> 
> NorthEast <- c(07, 20, 22, 30, 31, 33, 39, 41, 47)
> MidWest <- c(14, 15, 16, 17, 23, 24, 26, 28, 35, 36, 43, 52)
> South <- c(01, 04, 08, 09, 10, 11, 18, 19, 21, 25, 34, 37, 42, 44, 45, 49,
> 51)
> West <- c(02, 03, 05, 06, 12, 13, 27, 29, 32, 38, 46, 50, 53)
> Other <- c(40, 48, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 94,
> 98, 99)
> 
> So for example:
> Name    State_Code
> Tom       20
> Harry     56
> Ben         05
> Sally       04
> 
> Should become like:
> So for example:
> Name    State_Code REGION
> Tom       20                   NorthEast
> Harry     56                   Other
> Ben         05                  West
> Sally       04                   South
> 

dd <- read.table(text="Name    State_Code
Tom       20
Harry     56
Ben         05
Sally       04", header=TRUE, stringsAsFactors=FALSE)

# Create table for regions indexed by state_code

region.table <- rep("UNKNOWN",99)
region.table[NorthEast] <- "NorthEast"
region.table[MidWest] <- "MidWest"
region.table[South] <- "South"
region.table[West] <- "West" 
region.table[Other] <- "Other"
region.table

# then this is easy

dd[,"REGION"] <- region.table[dd$State_Code]


Berend



More information about the R-help mailing list