I have a dataset that looks like this:
id code1 code2
1 1 1 4
2 1 2 3
3 2 4 4
..
I want to change some numbers in the columns of ?code1? and ?code2? based
on ?indx? as below
[[1]]
code
1 1
2 3
3 4
For example, for the first ten records (rows) of my dataset, I want to
change 2 to 3, 3 to 4, 4 to 6, and 5 to 8 in both ?code1? and ?code2?,
while for the last ten records, I want to change 3 to 4 and 4 to 6.
You might check for "recode", for example in package car, or for
"transform". You could also do it the quick and dirty way, good to learn
indexing. Be careful if you have NA in your data, or data out of the
recode range.
Dieter
data = data.frame(code1=sample(1:5,10,TRUE),code2=sample(1:5,10,TRUE))
data =
rbind(data,data.frame(code1=sample(1:4,10,TRUE),code2=sample(1:4,10,TRUE)))
# The recode table as in your example
#indx = list(data.frame(code=c(1,3,4,6,8)),data.frame(code=c(1,2,4,6)))
#easier to read
recode1 = c(1,3,4,6,8)
recode2 = c(1,2,4,6)
data$code1T[1:10] = recode1[data$code1[1:10]]
data$code2T[1:10] = recode1[data$code2[1:10]]
data$code1T[11:20] = recode2[data$code1[11:20]]
data$code2T[11:20] = recode2[data$code2[11:20]]