Replacing a vector of numbers by specific characters in a data.frame

I have the following data:

df <- data.frame(a = c(5,5,8,4,2,1,9,8,7,3,6)

I want add a new column to name the numbers based on the following:

names <- c(1 = "A", 2 = "B", 3 = "C", 4 = "D", 5 = "E", 
6 = "F", 7 = "G", 8 = "H", 9 = "I", 10 = "J", 11 = "K")

The desired output is:

   a  b
1  5  E
2  5  E
3  8  H
4  4  D
5  2  B
6  1  A
7  9  I
8  8  H
9  7  G
10 3  C
11 6  F

Solution 1:

If you are continuing from your previous question where you want to divide the data by range, you can use labels option in cut.

Using the previous example -

range <- c(0, seq(19, max(DF$AGE) + 10, 10))
labs <- paste(range[-length(range)] + 1, range[-1], sep = '-')
labs
#[1] "1-19"  "20-29" "30-39" "40-49" "50-59" "60-69"

transform(DF, GROUP = cut(AGE, c(0, seq(19, max(AGE) + 10, 10)), labels = labs))

#    NAME AGE GROUP
#1   Gait  33 30-39
#2    Roc  43 40-49
#3     Bo  37 30-39
#4  Hernd  45 40-49
#5    Bet  44 40-49
#6    Oln  35 30-39
#7    Gai  22 20-29
#8   Rock  30 30-39
#9    Mil  38 30-39
#10  Arli  23 20-29
#11    Re  45 40-49
#12  Fred  43 40-49
#13    Ro  67 60-69
#14  Rock  43 40-49
#15 Wheat  28 20-29
#16 Germa  47 40-49
#17  Rock  16  1-19
#18  Nort  29 20-29
#19  Arli  22 20-29
#20 Rockv  31 30-39