Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Martin Weiss" <martin.weiss1@gmx.de> |
To | <statalist@hsphsun2.harvard.edu> |
Subject | AW: st: RE: RE: replace blank string values |
Date | Thu, 1 Jul 2010 12:45:49 +0200 |
<> " A check, once you have done this, that -name- is now constant within -id- is bysort id (name) : gen nameprob = name[1] != name[_N] list id name if nameprob" Ben`s -ssc d panels- is also ideal for this purpose: ************* clear* set obs 5 gen byte id=_n expand 3 sort id inp str10 name "" Nick "" Kit "" "" "" Ben "" Maarten "" "" "" "" Martin l, sepby(id) bys id (name): replace name=name[_N] l, sepby(id) //check for constant names within ids ssc inst panels panels id, isc(name) replace name="" in 2 panels id, isc(name) ************* HTH Martin -----Ursprüngliche Nachricht----- Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Nick Cox Gesendet: Donnerstag, 1. Juli 2010 12:02 An: statalist@hsphsun2.harvard.edu Betreff: RE: st: RE: RE: replace blank string values Fine, but if the data sometimes have missing names then there may be other problems too, perhaps other -name-s for the same -id-. A check, once you have done this, that -name- is now constant within -id- is bysort id (name) : gen nameprob = name[1] != name[_N] list id name if nameprob If no such observations are shown, then -nameprob- may be dropped. See also, following Martin's wildcard reference down to details, FAQ . . . . . . Listing observations in a group that differ on a variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox 11/01 How do I list observations in a group that differ on a variable? http://www.stata.com/support/faqs/data/diff.html FAQ . . . . . . . . . . . . . . . . . . . . . . . Replacing missing values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox 2/03 How can I replace missing values with previous or following nonmissing values? http://www.stata.com/support/faqs/data/missing.html Nick n.j.cox@durham.ac.uk Martin Weiss My code telescoped your two lines into *********** bysort id (name): replace name=name[_N] *********** But that is not strictly necessary... The FAQ at http://www.stata.com/support/faqs/data/#manip are definitely worth perusing for you. Full of neat tricks... richard boylan Sorting by name is the trick, thank you. sort id name by id: replace name = name[_N] On Wed, Jun 30, 2010 at 1:29 PM, Martin Weiss <martin.weiss1@gmx.de> wrote: > Throw in a -sort- after -expand- to make this work: > > > *********** > ... > expand 3 > sort id > inp str10 name > ... > *********** Martin Weiss > -sort-ing allocates the name to the end, so you can pick it up there... > > *********** > clear* > set obs 5 > gen byte id=_n > expand 3 > > inp str10 name > "" > Nick > "" > Kit > "" > "" > "" > Ben > "" > Maarten > "" > "" > "" > "" > Martin > > l, sepby(id) > bys id (name): replace name=name[_N] > l, sepby(id) > *********** richard boylan > I have a dataset which is a panel: id, year where id is the numeric > value the individual. > > I also have the name of the individual, however, for some > observations, the name is missing. > > How do I go about replacing the missing values for name? > > One way that works is > sort id year > by id: replace name = name[_n + 1] if name == "" & name[_n + 1] ~= "" > by id: replace name = name[_n + 1] if name == "" & name[_n + 1] ~= "" > ... > by id: replace name = name[_n + 1] if name == "" & name[_n + 1] ~= "" > > However, is there a more efficient way of doing this, say using egen? * * 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/