Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Need help with working with multiple files


From   Steve Samuels <sjsamuels@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Need help with working with multiple files
Date   Tue, 28 May 2013 09:50:55 -0400


Nick is right.  The macro reference in the loop should be ``x''.  As Nick suspected, I did have the files of the same name present in the do file directory, I was in error when I stated that my previous code "worded".  

Steve


On May 28, 2013, at 3:51 AM, Nick Cox wrote:

My point is a general one about macro manipulation. Consider the
following code, which you can run as a block

local ds1 "foo"
local ds2 "bar"
local all ds1 ds2

foreach x in `all' {
di "Show name: " _c
di "`x'"
di "Show contents: " _c
di "``x''"
}

Here are the results.

Show name: ds1
Show contents: foo
Show name: ds2
Show contents: bar

Nothing about macro manipulation is affected by filenames being the
subject of manipulation, or  on which operating system you use.

I suspect Steve has the same files existing under other names.
Otherwise put, what is the explanation for this working for Steve that
is consistent with the logic of local macros?

Nick
njcoxstata@gmail.com

On 28 May 2013 02:46, Steve Samuels <sjsamuels@gmail.com> wrote:
> 
> Well, I was concerned about that, but the code worked for me in
> Mac OS X, Here was my test do file:
> 
> 
> **********************************
> local ds1 "~Downloads/testsim01"
> local ds2 "~Downloads/dtest01"
> 
> local all ds1 ds2
> di `"`all'"'
> foreach x in `all' {
> use `x', clear
> gen nv =1
> save `x'_new, replace
> }
> ********************************
> 
> Steve
> 
> On May 27, 2013, at 8:50 PM, Nick Cox wrote:
> 
> This won't work, as when Stata hits the loop
> 
> foreach x in `all'
> 
> it will then see
> 
> foreach x in ds1 ds2
> 
> and will fail at
> 
> use ds1, clear
> 
> There are two levels of macro referencing in Steve's code, but only
> one level going backwards.
> 
> use ``x'', clear
> 
> is one way to fix it.
> 
> Nick
> njcoxstata@gmail.com
> 
> 
> On 28 May 2013 01:23, Steve Samuels <sjsamuels@gmail.com> wrote:
>> 
>> Michael Steward (michaelstewartresearch@gmail.com):
>> 
>> You can loop, as Nick suggests. Put the data management tasks in
>> external do files, e.g. tasks1.do, tasks2.do, tasks3.do. Then something
>> like the following should work (not tested in Windows). See the help for
>> -include-. The big problem I anticipate is the mounds of output that
>> this could generate.
>> 
>> 
>> *********************************
>> local ds1 "c/data/dataset-1"
>> local ds2 "c/data/newdata/dataset-2" // etc.
>> 
>> local all ds1 ds2
>> 
>> foreach x in `all' {
>>  use `x', clear
>> 
>>  include tasks1
>>  include tasks2
>>  include tasks3
>> 
>>  save `x'_new, replace
>> }
>> *********************************
>> 
>> Steve
>> 
>> 
>> On May 27, 2013, at 3:19 PM, Michael Stewart wrote:
>> 
>> Hi
>> I am trying to find a way to work multiple files successively.
>> I have multiple large files(really large) placed in different directories
>> I am trying to find a way to load each file into stata, complete bunch
>> of same datamagement tasks,create  a new file from it and places them
>> in a common folder
>> 
>> I could use a dofile and do something like
>> 
>> clear
>> use c\data\dataset-1
>> datamagement tasks
>> datamagement tasks
>> datamagement tasks
>> save c\data\dataset-1_new
>> clear
>> use c\data\newdata\dataset-2
>> datamagement tasks
>> datamagement tasks
>> datamagement tasks
>> save c\data\newdata\dataset-2_new
>> clear
>> 
>> But is there an elegant and simpler way to do it given that I have
>> nearly 15 files to do data management tasks.
>> 
>> Can we use foreach loop / forvalues loop or anything like that .Please suggest
*
*   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/


*
*   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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index