Bookmark and Share

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: How to loop a <clean> script over multiple files?


From   Brandon Olszewski <[email protected]>
To   [email protected]
Subject   Re: st: How to loop a <clean> script over multiple files?
Date   Sun, 22 Jan 2012 17:20:27 -0800

Thanks, Dmitry & Nick. I will tinker with it tomorrow when I'm back in
the office.
I've used -erase- for this kind of thing before. My office machine
runs Windows 7, but my home machine is Ubuntu/Linux, and I'm used to
the command terminal and, thus, the forward slashes.
We're updating to Stata12 soon, and I'll look for the -rename- options there.
Thanks again - hopefully I can get it to fly.

On Sat, Jan 21, 2012 at 1:48 AM, Nick Cox <[email protected]> wrote:
> If the OS were WIndows, !rm has its equivalent !del, but regardless of
> OS you could use the Stata command -erase-. From a tell-tale forward
> slash, I guess Brandon is using some flavour of Unix, but he could be
> in Windows and be being smart about using forward slashes in Stata.
>
> -renvars- (mentioned but not explained by Brandon)  is from SJ. The
> new -rename- in Stata 12 is as least as good and has a nicer syntax.
>
> -fs- (mentioned and explained by Dimitriy) is fine with files in two
> or more directories. You just need to say what they are.
>
> Nick
>
> On Sat, Jan 21, 2012 at 2:21 AM, Dimitriy V. Masterov
> <[email protected]> wrote:
>
>> Here's some toy code that seems to work as long as the files are all
>> in the same directory. You should be able to modify it pretty easily.
>>
>> I chose a slightly different strategy than you because I find it
>> easier to append multiple files than to merge them (though there are
>> ssc commands like nmerge and mergeall that you may want to look into).
>> You probably want the data in long format anyway.
>>
>> Let me and the list know if you have any problems. I think regular
>> expression/subinstr combo could be improved upon, but I am am too
>> lazy.
>>
>> DVM
>>
>> *********************************************************
>> #delimit;
>> clear all;
>>
>> cd "$lapdesktop"; // Change this!
>>
>> /* Create Fake Data */
>> forvalues v=1/24 {;
>>        sysuse auto, clear;
>>        outsheet using "data_file_`v'.txt", replace;
>> };
>>
>>
>> /* Import the txt data and do some renaming */
>> ssc install fs; // don't need to do it each time
>> fs data_file*.txt;
>>
>> foreach txtfile in `r(files)' {;
>>        insheet using "`txtfile'", clear;
>>        local date "`=regexr("`=subinstr("`txtfile'",".txt","",1)'","[^0-9]+","")'";
>> // keep only the numberic part of filename
>>        rename make id;
>>        gen date=`date';
>>        save sd_`date'.dta, replace;
>> };
>>
>>
>> /* Combine the Stata Files Into One And Reshape */
>> fs sd*.dta;
>>
>> clear;
>>
>> append using `r(files)';
>>
>> sort id date;
>>
>> reshape wide price-foreign, i(id) j(date);
>>
>>
>> /* Erase both the txt and individual Stata file */
>> !rm data_file*.txt;
>> !rm sd_*.dta;
>> *********************************************************
>
> *
> *   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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index