recode                package:epicalc                R Documentation

_R_e_c_o_d_e _v_a_r_i_a_b_l_e(_s)

_D_e_s_c_r_i_p_t_i_o_n:

     Change value(s) of variable(s) in the default data frame

_U_s_a_g_e:

     recode(vars, old.value, new.value, dataFrame = .data)  

_A_r_g_u_m_e_n_t_s:

    vars: a variable or variables with the same recoding scheme

old.value: original values or a condition

new.value: new values for all variables listed

dataFrame: a data frame

_D_e_t_a_i_l_s:

     'recode' is very useful for recoding missing values but can also
     be used for other purposes.

     'vars' can be a single variable or a list of variables in the
     format of list(var1, var2, var3) or c(var1, var2, var3), which
     will be recoded simultaneously under the same scheme.

     Both 'old.value' and 'new.value' can be vectors of equal length.
     The elements of old.value and new.value will be matched by
     corresponding orders. However, 'new.value' can have a single
     element into which all the old values are recoded.

     The argument 'old.value' can be also be a condition for recoding
     the 'vars' into the single new.value regardless of the old value.

     Note that changing the value label of a variable's levels can be
     done with 'levels(var)[levels(var)=="old name"] <- "new name"'.
     However, Epicalc 'recode' is more efficient in changing several
     factors using the same scheme. See example. 

     All the 'recode'd vars are automatically 'pack'ed into the default
     data frame which is synchronize with the one in the search path.

_A_u_t_h_o_r(_s):

     Virasakdi Chongsuvivatwong <cvirasak@medicine.psu.ac.th>

_S_e_e _A_l_s_o:

     'replace', 'lookup'

_E_x_a_m_p_l_e_s:

     age       <- c( 37,  99,  24,  33,  31,  30,  26,  25) 
     systolic  <- c(120, 120, 110, 120, 130, 120, 888, 999) 
     diastolic <- c( 80,  80,  70,  80,  70, 999,  70,  60)
     sick      <- c(  1,   2,   2,   1,   2,   2,   2,   NA)
     treated   <- c(  2,   1,   2,   2,   1,   2,   2,   1)
     yesno     <- c("Y", "N")
     sick      <- factor(sick, labels=yesno)
     treated   <- factor(treated, labels=yesno)
     .data     <- data.frame(age, systolic, diastolic, sick, treated)
     use(.data)
     pack()
     # 'pack() integate all variables into .data
     # to avoid confusion with free vectors.

     # The above lines generate a hypothetical data frame. 
     # In reality, one just exploits 'use("datafile")', if the "datafile" exists.
     .data
     summ()
     recode(age, old.value=99, new.value=NA)
     summ()
     recode(vars=c(systolic, diastolic), 999, NA) # The value 888 is not recoded.
     summ()
     recode(systolic, systolic > 250, NA)
     summ()
     table(sick, treated)
     recode(vars=c(sick, treated), old.value="Y", new.value="yes")
     table(sick, treated)

     # Recode both sick and treated to "N" if sick status is missing. 
     recode(vars=c(sick,treated), is.na(sick), new.value="N") 
     table(sick, treated) 

     # Recode more than one old values
     data(VCT)
     use(VCT)
     des()
     table(A16); table(A17); table(A18)
     recode(vars=A16:A18,  c("willing","willing if have money"), "willing")
     table(A16); table(A17); table(A18)

     # Swaping
     data(Hakimi)
     use(Hakimi)
     des()
     summ()
     table(treatment)
     recode(treatment, c(1,2), c(2,1))
     table(treatment)

