<>
By the way, I just ran across Roger Newson's helpful utility -descsave- which can help with going the opposite direction with your issue (exporting some variable names & labels to apply to another dataset).
e.g.,
**
ssc install descsave
sysuse auto, clear
descsave * , saving( test.dta , replace) keep(name varlab) gsort(name)
use test.dta, clear
**
~Eric
__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
[email protected]
Office: +979.845.6754
On Jan 6, 2010, at 12:52 PM, Eric Booth wrote:
> <>
> Hi Dorothy:
>
> Here's one way to do it:
>
> *--------------BEGIN EXAMPLE
> global sf "`pwd'"
> /*
> This is your spreadsheet with the varnames & labels:
> */
>
> clear
> inp str30 varname str50 varlabel
> "var1" "label1 has lots of words in it"
> "var2" "label2"
> "var3" "label3"
> "var4" "label4"
> "var5" "label5"
> "variable2" "morelabels"
> "variable" "labeled"
> "var6" "label6"
> "var7" "label7"
> "var8" "label8"
> "var9" "test"
> "var99" "lastone"
> end
>
> /*
> This process will rename your vars/labels
> backward, so you need to pay special attention
> to your sort order...you may need to simply reverse
> the order with -gsort-, or you might need to specify the
> exact sort order with -sort-
> So, the order of the vars/labels in your spreadsheet should
> be in the reverse order of the vars in your target dataset
> Also, the number of vars in your target dataset should match
> the number of vars/labels in this spreadsheet
> Finally, don't use dashes "-" in your var labels
> */
> gsort -varname
>
> //also, we need to get rid of spaced in the varlabel, for now
> replace varlabel = subinstr(varlabel," ", "_", .)
>
> levelsof varname, local(varname) clean
> di "`varname'" //<-- notice the order of the varnames
> levelsof varlabel, local(varlabel) clean
>
> **
> preserve
> //we are going to rename the vars in auto.dta
> sysuse auto.dta, clear
> ds
> local varlist `r(varlist)'
> //make sure these line up:
> di "`r(varlist)'"
> di "`varname'"
> **
> tokenize `"`varname'"'
> foreach v of local varlist {
> rename `v' `1'
> macro shift
> }
> ds
> local varlist `r(varlist)'
> tokenize `"`varlabel'"'
> foreach v of local varlist {
> label var `v' `1'
> macro shift
> }
>
> //replace the spaces in the varlabel//
> cap ssc install labutil
> labvarch `varlist', subst("_" " ")
>
> save "$sf/updated_data.dta", replace
> restore
> **
> use "$sf/updated_data.dta", clear
> desc
> codebook, c
> *--------------END EXAMPLE
>
> ~ Eric
> __
> Eric A. Booth
> Public Policy Research Institute
> Texas A&M University
> [email protected]
> Office: +979.845.6754
>
>
>
>
>
>
> On Jan 6, 2010, at 12:05 PM, Nick Cox wrote:
>
>> Yes, if you do it interactively, e.g. within the Data Editor, in which
>> case -lab var- is still implicit. But I don't think that's what you're
>> seeking, as that would be more work, not less.
>>
>> Otherwise no. But you should be able to make it easier by a global edit
>> of a text file containing the information in a decent text editor to
>> produce a .do file.
>>
>> Nick
>> [email protected]
>>
>> Dorothy Bridges
>>
>> I need to label dozens of variables. Is there a way to do this
>> without using the "lab var" command for each one? I have the variable
>> names and labels in an excel (or .dta) file.
>>
>>
>
>
*
* 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/