{smcl}
{* 12 July 2002}{...}
{hline}
help for {hi:labvalch}
{hline}

{title:Copy and/or delete value labels}

{p 2 11}
{cmd:labvalch} 
{it:valuelabelname} 
{cmd:,} 
[ 
{c -(} 
{cmdab:f:rom}{cmd:(}{it:numlist}{cmd:)} 
{cmdab:t:o}{cmd:(}{it:numlist}{cmd:)} 
{c |} 
{cmdab:s:wap}{cmd:(}{it:#1 #2}{cmd:)} 
{c )-}
{cmd:delete}{cmd:(}{it:numlist}{cmd:)} 
{cmdab:l:ist} 
] 


{title:Description}

{p}{cmd:labvalch} copies and/or deletes specified value labels from value label
{it:valuelabelname}.

{p}Any {cmd:label define }{it:whatever}{cmd: , modify} command that executes
changes is echoed to the monitor. 
 

{title:Remarks} 

{p}
Suppose that variable {cmd:gender} is coded 1 for male and 2 for female by 

{p 4 8}{inp:. label def gender 1 "male" 2 "female"}{p_end} 
{p 4 8}{inp:. label val gender gender} 

{p}but we find it convenient to change to 0 and 1:  

{p 4 8}{inp:. replace gender = gender - 1} 

{p}We need also to change the value labels. Slow but sure is 

{p 4 8}{inp:. label def gender 0 "male" 1 "female", modify}

{p}It would normally be best to clean up by also deleting the label
for 2:

{p 4 8}{inp:. label def gender 0 "male" 1 "female" 2 "", modify}

{p}An alternative is 

{p 4 8}{inp:. labvalch gender, f(1 2) t(0 1)} 

{p}Again, it would normally be best to clean up by also deleting the label
for 2: 

{p 4 8}{inp:. labvalch gender, f(1 2) t(0 1) delete(2)} 

{p}Suppose we have a set of labels 

{p 4 8}{inp:. label def rating 1 "poor" 2 "fair" 3 "OK" 4 "good" 5 "excellent"} 

{p}and we wish to reverse the labelling. This is done by 

{p 4 8}{inp:. labvalch rating, f(1/5) t(5/1)} 


{title:Options}

{p 0 4}{cmd:from(}{it:numlist}{cmd:)} specifies a {it:numlist} of integers
whose value labels are to be copied. These labels will not be changed unless an
element of the {it:numlist} also appears in {cmd:to( )}, or unless they are deleted
by {cmd:delete()}.  Specifying an integer for which a label does not exist is
treated as an error.
 
{p 0 4}{cmd:to(}{it:numlist}{cmd:)} specifies a {it:numlist} of integers whose
value labels are to be defined. Existing value labels are modified. 

{p}All replacements take place independently. Thus {cmd:from(2 1) to(1 2)}
would swap value labels associated with 1 and 2: the label of 2 becomes that of
1, and {it:vice versa}. ({cmd:swap(1 2)} would be another way to do this.)

{p}{cmd:from()} and {cmd:to()} must contain the same number of elements after
expansion. This syntax may not be combined with {cmd:swap()}. 

{p 0 4}{cmd:swap(}{it:#1 #2}{cmd:)} specifies two integers possessing value
labels whose labels are to be swapped. This syntax may not be combined with
{cmd:from() to()}. 

{p 0 4}{cmd:delete(}{it:numlist}{cmd:)} specifies a {it:numlist} of integers
whose value labels are to be deleted. Note that all deletions take place after
copying.  Specifying an integer for which a label does not exist is not treated
as an error, but this will be noted. 

{p 0 4}{cmd:list} invokes {cmd:label list} {it:valuelabelname} after the
changes produced. 
    
    
{title:Examples} 

{p 4 8}{inp:. labvalch rating, f(1/5) t(5/1)}

{p 4 8}{inp:. labvalch foo, f(1 1 1 1) t(2/5)}

{p 4 4}{inp:. foreach label in a b c d e {c -(}}{break}
{inp:.{space 8}labvalch `label', f(1 2) t(0 1) delete(2)}{break}
{inp:. {c )-}}


{title:Author} 

         Nicholas J. Cox, University of Durham, U.K.
         n.j.cox@durham.ac.uk


{title:Acknowledgements} 

	Fred Wolfe made interesting and helpful comments on 
	{cmd:labcopy} and {cmd:labdel}, precursors of this command.


{title:Also see}

 Manual:  {hi: [U] 15.6}, {hi:[R] label}, {hi:[R] recode} 
{p 0 19}On-line:  help for {help label}; {help numlist}; {help recode}; 
{help labedit} (if installed){p_end}

