Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: RE: RE: -encode- with predetermined sorting
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: RE: RE: -encode- with predetermined sorting
Date
Tue, 12 Jun 2012 22:19:18 +0100
My point 2 was about your original example. From the details here the
flavour of your problem is a bit clearer, and now I advise checking
out -labmask- (SJ) and also
SJ-8-2 gr0034 . . . . . . . . . . Speaking Stata: Between tables and graphs
(help labmask, seqvar if installed) . . . . . . . . . . . . N. J. Cox
Q2/08 SJ 8(2):269--289
outlines techniques for producing table-like graphs
and also -sencode- (SJ, SSC),
-encode- is an official command. It's not usually difficult to write
your own alternative if it doesn't do what you want.
Nick
On Tue, Jun 12, 2012 at 3:52 PM, Impavido, Gregorio <[email protected]> wrote:
> Thank you Nick. Your suggestions prompted me to do a little more homework: hence, my belated response.
>
> My original question is about both the points you raise (I think).
>
> Regarding your point 2., my loop below produces such labels in advance following the sorting of a. But in 2. below you suggest that this could be done with a one line command. Are you thinking of some use of -levelsof-? Because if I have (say) many values in b, a one line of the type -label define lblname 1 "a" 4 "b" ... - is rather tedious (although it forces the idiosyncratic sorting I want). But most importantly it is not readily changeable if I want to change the sort order (BTW: The whole use of this is to produce -graph twoyay bar- charts where the xlabels are sorted in any arbitrary fashion; contrary to -graph bar-, there is no -sort()- option in -graph twoway bar- (that I could find...))
>
> Regarding your point 1., I managed to force -enocode- to use the arbitrary sorting produced in advance (by the loop below) by coding -encode a, gen(c2) label(lblname)-. This produces the same variable c produced by -label values c lblname- below. Then, I am more confused: is there a concrete advantage then in using -encode- afterall if I have to specify the label name in advance? Wouldn't be more useful if encode had a -sort(varlist)- option?
Nick Cox
> 1. The value labels for an idiosyncratic -encode- need to exist in advance. Idiosyncratic just means here an encoding that -encode- would not produce by default.
>
> 2. In your case you could define them with a single command line, which would be quicker to type and to execute than your code.
>
> I am guessing that your question is more about the first than the second.
Impavido, Gregorio
> I have the following dataset:
>
> . list
>
> +--------+
> | a b |
> |--------|
> 1. | 10 a |
> 2. | 40 b |
> 3. | 30 c |
> 4. | 20 d |
> +--------+
>
> If I encode b and generate c, I get:
>
> . list *, nolabel
>
> +-------------+
> | a b c |
> |-------------|
> 1. | 10 a 1 |
> 2. | 40 b 2 |
> 3. | 30 c 3 |
> 4. | 20 d 4 |
> +-------------+
>
> Now, I want to have a different sort order for c, say as a function of a:
>
> . list *, nolabel
>
> +-------------+
> | a b c |
> |-------------|
> 1. | 10 a 1 |
> 2. | 40 b 4 |
> 3. | 30 c 3 |
> 4. | 20 d 2 |
> +-------------+
>
> Is there a more rapid way than the following to obtain what I want?
>
> a
> gen c = _n
> forvalues i=1/4 {
> label define lblname `i' "`: di b[`i']'", add
> }
> label values c lblname
*
* 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/