I guess that more preferable, R-ish way to do what you are trying to do, is to use a lookup table.
First, I create a reproducible example:
set.seed(68826333)
(
dat <- data.frame(
account = sample(1:4, 10, TRUE),
value = rnorm(10)
)
)
# account value
#1 2 1.17913936
#2 1 -1.40654534
#3 3 -2.46079924
#4 1 -0.20670095
#5 1 -1.29534910
#6 1 0.80030380
#7 4 0.37431903
#8 4 -0.07338782
#9 1 -0.50872642
#10 4 -0.15198686
Then I create a lookup table:
(
lookup <- c('1' = 'Asset', '2' = 'Suspense', '3' = 'Revenue', '4' = 'Expense')
)
# 1 2 3 4
# "Asset" "Suspense" "Revenue" "Expense"
In my lookup table names of the vector corresponds to values of the account
variable from dat
.
Now, whenever you want to map your numerical data from account
variable into account types, you can do just simple subsetting and reassignment:
dat$account <- lookup[as.character(dat$account)]
#dat
# account value
#1 Suspense 1.17913936
#2 Asset -1.40654534
#3 Revenue -2.46079924
#4 Asset -0.20670095
#5 Asset -1.29534910
#6 Asset 0.80030380
#7 Expense 0.37431903
#8 Expense -0.07338782
#9 Asset -0.50872642
#10 Expense -0.15198686