Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Joseph Coveney" <jcoveney@bigplanet.com> |
To | <statalist@hsphsun2.harvard.edu> |
Subject | Re: st: Importing subset of a pipe delimited textfile |
Date | Wed, 17 Oct 2012 22:15:33 +0900 |
Rob Shaw wrote: Thanks. Yes that would work but the problem is the varying length of each line. So I need to get filefilter or another command to do one of: [snip] Is there a way to use -filefilter- to achieve this? File sample: 1|ABCD|23|XYZ 10|BCED|1|YZX 30|DCHS|234|YBH -------------------------------------------------------------------------------- If your file sample is representative, that is, if the string variables are of fixed length as shown, then something like that below would work. (Start at "Begin here".) Joseph Coveney . input str15 a a 1. "1|ABCD|23|XYZ" 2. "10|BCED|1|YZX" 3. "30|DCHS|234|YBH" 4. end . quietly compress . . tempfile tmpfil0 . outfile using `tmpfil0', noquote wide . . type `tmpfil0' 1|ABCD|23|XYZ 10|BCED|1|YZX 30|DCHS|234|YBH . . * . * Begin here . * . tempfile tmpfil1 . filefilter `tmpfil0' `tmpfil1', from("|") to(\032d\Q\032d) . . tempfile tmpfil2 . filefilter `tmpfil1' `tmpfil2', from(\r\n) to(\Q\r\n) . . type `tmpfil2' 1 " ABCD " 23 " XYZ " 10 " BCED " 1 " YZX " 30 " DCHS " 234 " YBH " . . infile a str6 b c str20 d using `tmpfil2', clear (3 observations read) . quietly replace b = trim(b) . quietly replace d = trim(d) . quietly compress . . list, noobs +-----------------------+ | a b c d | |-----------------------| | 1 ABCD 23 XYZ | | 10 BCED 1 YZX | | 30 DCHS 234 YBH | +-----------------------+ . . exit end of do-file * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/