[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
"Nick Cox" <n.j.cox@durham.ac.uk> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
st: RE: I did it! sorting with a key. |

Date |
Fri, 12 Sep 2008 15:43:51 +0100 |

Dear Ashim: "Guys" at least in some quarters connotes males only and thus might be read as sexist. I have some comments on your program: 0. The exact purpose of the program needs to be documented in a help file. Without that readers have to guess at precisely what is intended. 1. You make -key()- optional, but your program will I think fail if no -key()- is provided. As the whole point of the program is to use a key, that option should be compulsory. 2. The use of -st_view()- within your Mata code implies that both your main -varlist- and the argument of -key()- should be varlists specifying only numeric variables. Your program will fail otherwise. It is best to trap any string variables early. If you ever wish to sort string variables, or with string variables, you would need to generalise the program or to write another. 3. That being so, the option -strok- is a distraction on -marksample-. (It is irrelevant in any case given -novarlist-.) 4. As it stands, your -marksample- always generates 1s for every observation. It is thus redundant as it stands, although equally it does no harm. The main point of using -marksample- would thus be if you decided to support -if- and -in- as well. 5. There is no check in your program that the number of variables in -varlist- and -key()- is the same. Answering also another question of yours, your program could thus start program keysortrows version 9 syntax varlist(min=2 numeric) , key(varlist numeric min=2) marksample touse, novarlist local nv : word count `varlist' local nk : word count `key' if `nv' != `nk' { di as err "`nv' variables, but `nk' key variables" exit 198 } mata:_keysortrower("`varlist'", "`key'","`touse'") end or program keysortrows version 9 syntax varlist(min=2 numeric) [if] [in] , key(varlist numeric min=2) <same stuff> end depending on the answer to 4. I have not checked this code. I have not looked in detail at your Mata code. I will if I get some time later to do it. Nick n.j.cox@durham.ac.uk Ashim Kapoor I wrote a code which is the SAME as sortrows but it sorts with a KEY. Here is the ado file :- program define keysortrows version 9 syntax varlist(min=2) , /// [ /// key(string) /// ] marksample touse, strok novarlist mata:_keysortrower("`varlist'", "`key'","`touse'") end mata: void _keysortrower(string scalar varlist,string scalar key,string scalar touse) { real matrix x st_view(X,.,tokens(varlist),touse) st_view(Y,.,tokens(key), touse) for(i=1;i<=rows(X);i++){ x=(X[i,.]\Y[i,.]) x=sort(x',2) x=x' X[i,.]=x[1,.] Y[i,.]=x[2,.] } } end * * 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/

**Follow-Ups**:**Re: st: RE: I did it! sorting with a key.***From:*"Ashim Kapoor" <ashimkapoor@gmail.com>

**References**:**st: I did it! sorting with a key.***From:*"Ashim Kapoor" <ashimkapoor@gmail.com>

- Prev by Date:
**st: RE: Re: "cond" command** - Next by Date:
**Re: st: RE: I did it! sorting with a key.** - Previous by thread:
**st: I did it! sorting with a key.** - Next by thread:
**Re: st: RE: I did it! sorting with a key.** - Index(es):

© Copyright 1996–2017 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |