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]

From |
Nick Cox <njcoxstata@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Using foreach and forval to append data files |

Date |
Tue, 26 Mar 2013 16:35:52 +0000 |

This can be simplified. First, -fs- from SSC is a convenient wrapper for the -dir- stuff Tony uses. Some variation on clear fs *.dta append using `r(files)' should be sufficient. Clearly your wildcard might differ from *.dta. On Tue, Mar 26, 2013 at 3:28 PM, Li Chuntao (Tony) <leechtcn@gmail.com> wrote: > My Suggestion is use macro functions to save the list of files into a > local macro > > sample code as following: > > clear > > cd filepath > > local i: dir . file * > > tokenize `"`i'"' > > > use `1', clear > local j=2 > > while `"``j''"'~="" { > append using ``j'' > local j = `j'+1 > } > > > On Tue, Mar 26, 2013 at 9:01 PM, Tim Evans <Tim.Evans@wmciu.nhs.uk> wrote: >> Maarten, >> >> Thanks for this - very nice! Worked a treat. >> >> Best wishes >> >> Tim >> >> >> -----Original Message----- >> From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Maarten Buis >> Sent: 26 March 2013 12:15 >> To: statalist@hsphsun2.harvard.edu >> Subject: Re: st: Using foreach and forval to append data files >> >> local k = 1 >> forval i = 1/6 { >> foreach j of numlist 1 2 8 { >> if `k' == 1 { >> use `i'_`j'_results >> } >> else { >> append using `i'_`j'_results >> } >> local k = `k' + 1 >> } >> } >> >> Hope this helps, >> Maarten >> >> On Tue, Mar 26, 2013 at 1:07 PM, Tim Evans wrote: >>> Using Stata 11.2, I've created 18 individual results sets that have the following naming schedule: >>> >>> 1_1_results.dta >>> 1_2_results.dta >>> 1_8_results.dta >>> 2_1_results.dta >>> 2_2_results.dta >>> 2_8_results.dta >>> 3_1_results.dta >>> 3_2_results.dta >>> 3_8_results.dta >>> >>> This continues until the first number reaches 6. >>> >>> What I am trying to achieve is an automated process of appending all data files and I was using the following code - but this adds a duplication of the file 1_1_results: >>> >>> use 1_1_results.dta, replace >>> forval i = 1/6 { >>> foreach j of numlist 1 2 8 { >>> append using `i'_`j'_results >>> } >>> } >>> >>> I then tried this: >>> >>> use 1_1_results.dta, replace >>> forval i = 2/6 { >>> foreach j of numlist 1 2 8 { >>> append using `i'_`j'_results >>> } >>> } >>> >>> Which I then realised that I miss out on any file named: >>> >>> 1_2_*** >>> 1_8_*** >>> >>> Other than using the first loop and using -duplicates- to identify and then remove the duplicates, is there a more direct way of using and then appending datasets? * * 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/

**References**:**st: time in xtmixed***From:*Chao Wang <chao.wang@obs-gyn.ox.ac.uk>

**st: Using foreach and forval to append data files***From:*Tim Evans <Tim.Evans@wmciu.nhs.uk>

**RE: st: Using foreach and forval to append data files***From:*Tim Evans <Tim.Evans@wmciu.nhs.uk>

**Re: st: Using foreach and forval to append data files***From:*"Li Chuntao (Tony)" <leechtcn@gmail.com>

- Prev by Date:
**Re: st: how to group variables into equal number groups** - Next by Date:
**st: Twoway graph question** - Previous by thread:
**Re: st: Using foreach and forval to append data files** - Next by thread:
**st: RE: Using foreach and forval to append data files** - Index(es):