Ulrich Kohler already supplied an interesting solution. I'd like to show how I usually handle this sort of situation (which does come up often -- with either -append- or -merge-). This might be more of an old-fashioned programmer's method.
local j "0"
foreach f in `r(files)' {
if `j' == 0 {
use `f'
}
else {
append using `f'
}
local ++j
}
One can be more clever by putting the ++j (or j++) inside the -if- statement, if you prefer.
I haven't yet tried that technique; it might go
if `j++' ==0
(if I have the syntax right -- or is it `=j++' ... ?) or even
if ~`j++'
I hope this is may be useful.
--David
-------------- Original message from "Nuno Soares" <[email protected]>: --------------
> Hi everyone,
>
> I'm trying to make Stata to append several files that are in a given
> directory without the need of specifying the name of each one. I was
> thinking of doing something like this (using the fs package):
>
> clear
> cd "C:\data"
> qui fs *
> foreach f in `r(files)' {
> append using `f'
> }
>
> The problem with this code is that Stata doesn't allow to append a data file
> when it doesn't have a file opened (it will return the error message:
> "no dataset in use
> r(3)")
>
> This means that I must have at least one of the files loaded in Stata before
> using the above code. But if I then use the above code, I would end up
> getting duplicate observations, because the file I've first used is also
> appended... Any ideas of how to solve this issue?
>
> Best,
>
> Nuno
*
* 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/