Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Lachenbruch, Peter" <Peter.Lachenbruch@oregonstate.edu> |
To | "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |
Subject | RE: st: Changing labels for multiple variables at the same time |
Date | Sun, 11 Apr 2010 09:59:37 -0700 |
Stata also has extended missing value codes that would be useful for this. You don't want to have to deliberately exclude those with missing values. I'd consider first using mvdecode for your variables and then doing the label define and label values. ________________________________________ From: owner-statalist@hsphsun2.harvard.edu [owner-statalist@hsphsun2.harvard.edu] On Behalf Of Michael Norman Mitchell [Michael.Norman.Mitchell@gmail.com] Sent: Saturday, April 10, 2010 7:02 PM To: statalist@hsphsun2.harvard.edu Subject: Re: st: Changing labels for multiple variables at the same time 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/ * * 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/