Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Changing labels for multiple variables at the same time


From   Michael Norman Mitchell <Michael.Norman.Mitchell@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Changing labels for multiple variables at the same time
Date   Sat, 10 Apr 2010 19:02:06 -0700

Dear Anna

This is an awesome question... I think it really shows off one of the strengths of Stata because this is so easy in Stata. The key is the -label dir- command that gives a list of all of the value labels in memory, and returns that list as -r(names)- . Then, a -foreach- loop is used to loop across all of those names of the labels to modify them as you see fit. Here is an example...

* use a dataset
sysuse nlsw88

* show existing labels
label list

* get list of existing labels, stored in r(names)
label dir

* go through all labels, and modify them
foreach lab in `r(names)' {
  label define `lab' -1 "Missing", modify
  label define `lab' -3 "Not applicable", modify
}

* show the modified labels
label list


and here is the output this generates. Note how all of the labels, afterward, have a value labeled for -1 and -3.

. * use a dataset
. sysuse nlsw88
(NLSW, 1988 extract)

.
. * show existing labels
. label list
occlbl:
           1 Professional/technical
           2 Managers/admin
           3 Sales
           4 Clerical/unskilled
           5 Craftsmen
           6 Operatives
           7 Transport
           8 Laborers
           9 Farmers
          10 Farm laborers
          11 Service
          12 Household workers
          13 Other
indlbl:
           1 Ag/Forestry/Fisheries
           2 Mining
           3 Construction
           4 Manufacturing
           5 Transport/Comm/Utility
           6 Wholesale/Retail Trade
           7 Finance/Ins/Real Estate
           8 Business/Repair Svc
           9 Personal Services
          10 Entertainment/Rec Svc
          11 Professional Services
          12 Public Administration
racelbl:
           1 white
           2 black
           3 other
marlbl:
           0 single
           1 married
gradlbl:
           0 not college grad
           1 college grad
smsalbl:
           0 nonSMSA
           1 SMSA
unionlbl:
           0 nonunion
           1 union

.
. * get list of existing labels, stored in r(names)
. label dir
occlbl
indlbl
racelbl
marlbl
gradlbl
smsalbl
unionlbl

.
. * go through all labels, and modify them
. foreach lab in `r(names)' {
  2.   label define `lab' -1 "Missing", modify
  3.   label define `lab' -3 "Not applicable", modify
  4. }

.
. * show the modified labels
. label list
unionlbl:
          -3 Not applicable
          -1 Missing
           0 nonunion
           1 union
smsalbl:
          -3 Not applicable
          -1 Missing
           0 nonSMSA
           1 SMSA
gradlbl:
          -3 Not applicable
          -1 Missing
           0 not college grad
           1 college grad
marlbl:
          -3 Not applicable
          -1 Missing
           0 single
           1 married
racelbl:
          -3 Not applicable
          -1 Missing
           1 white
           2 black
           3 other
indlbl:
          -3 Not applicable
          -1 Missing
           1 Ag/Forestry/Fisheries
           2 Mining
           3 Construction
           4 Manufacturing
           5 Transport/Comm/Utility
           6 Wholesale/Retail Trade
           7 Finance/Ins/Real Estate
           8 Business/Repair Svc
           9 Personal Services
          10 Entertainment/Rec Svc
          11 Professional Services
          12 Public Administration
occlbl:
          -3 Not applicable
          -1 Missing
           1 Professional/technical
           2 Managers/admin
           3 Sales
           4 Clerical/unskilled
           5 Craftsmen
           6 Operatives
           7 Transport
           8 Laborers
           9 Farmers
          10 Farm laborers
          11 Service
          12 Household workers
          13 Other

.
end of do-file

Hope that does the trick.

Best regards,

Michael N. Mitchell
See the Stata tidbit of the week at...
http://www.MichaelNormanMitchell.com

On 2010-04-10 6.22 PM, Anna Reimondos wrote:
Hello,
I would like to define a some new value labels which I want to attach
to all existing value labels in my dataset.

For example, I want to define among other things that  -1 is Missing,
and -3 is Not applicable:

sysuse nlsw88, clear
label define gradlbl -1 "Missing", modify
label define gradlbl -3 "Not applicable", modify

However I want to modify all the labels (a couple of hundred labels in
the dataset I am working on) in the same way not just gradlbl.

Does anyone know of a way to do this? I tried using the extended macro
functions but without much luck.

Thanks very much,
Anna
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index