[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 |
RE: st: right justifying strings, left padding strings with zeros |

Date |
Wed, 23 Nov 2005 10:16:05 -0000 |

The step-by-step approach is usually best, especially if it turns out that you want something slightly different. But note that Ian's code can be condensed to rtrim(substr(v1,1,3)) + subinstr(substr(v1,4,6)," ","0",.)) not that I would necessarily recommend that. Given a trade-off between clarity and brevity, go for clarity. Nick n.j.cox@durham.ac.uk Ian Watson > Assuming your data is in a plain text file test.txt, try the > following: > > . insheet using test.txt > (1 var, 7 obs) > > . list > > +--------+ > | v1 | > |--------| > 1. | B 1 | > 2. | B 120 | > 3. | CCH 7 | > 4. | CCH 23 | > 5. | CCH213 | > |--------| > 6. | UW 23 | > 7. | UW 232 | > +--------+ > > . gen alpha=substr(v1,1,3) > > . list alpha > > +-------+ > | alpha | > |-------| > 1. | B | > 2. | B | > 3. | CCH | > 4. | CCH | > 5. | CCH | > |-------| > 6. | UW | > 7. | UW | > +-------+ > > . replace alpha=rtrim(alpha) > (4 real changes made) > > . list alpha > > +-------+ > | alpha | > |-------| > 1. | B | > 2. | B | > 3. | CCH | > 4. | CCH | > 5. | CCH | > |-------| > 6. | UW | > 7. | UW | > +-------+ > > > . gen num=substr(v1,4,6) > > . list num > > +-----+ > | num | > |-----| > 1. | 1 | > 2. | 120 | > 3. | 7 | > 4. | 23 | > 5. | 213 | > |-----| > 6. | 23 | > 7. | 232 | > +-----+ > > . replace num=subinstr(num," ","0",.) > (4 real changes made) > > . list num > > +-----+ > | num | > |-----| > 1. | 001 | > 2. | 120 | > 3. | 007 | > 4. | 023 | > 5. | 213 | > |-----| > 6. | 023 | > 7. | 232 | > +-----+ > > . gen v2=alpha+num > > . list v2 > > +--------+ > | v2 | > |--------| > 1. | B001 | > 2. | B120 | > 3. | CCH007 | > 4. | CCH023 | > 5. | CCH213 | > |--------| > 6. | UW023 | > 7. | UW232 | > +--------+ Clare L Maxwell > > I have a six-column subject identifier coming into Stata > from an ASCII > > file that looks like the following: > > > > B 1 > > B 120 > > CCH 7 > > CCH 23 > > CCH213 > > UW 23 > > UW 232 > > > > I want to read in and manipulate these 6 columns so that in > the end, I > > have a str6 variable that looks like this: > > > > B001 > > B120 > > CCH007 > > CCH023 > > CCH213 > > UW023 > > UW232 > > > > That is, the first three columns have been right justified > and the last > > three columns have been left-padded with zeros. I have > tried various > > options, but so far, not much luck. I was considering > reading them in > > as six str1 variables and putting things together sort of by brute > > force, but I thought I'd ask first. Any suggestions on good string > > manipulations for this problem? * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**Follow-Ups**:**RE: st: right justifying strings, left padding strings with zeros***From:*Clare L Maxwell <maxwellcl1@earthlink.net>

- Prev by Date:
**st: RE: saving and later retrieving results from an estimated model** - Next by Date:
**RE: st: right justifying strings, left padding strings with zeros** - Previous by thread:
**Re: st: right justifying strings, left padding strings with zeros** - Next by thread:
**RE: st: right justifying strings, left padding strings with zeros** - Index(es):

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