Maarten Buis has already given a good answer to your question.
I agree with Maarten that learning about -foreach- is a very good idea.
-for- has been obsolete since Stata 7.
As far as your original approach was concerned, it could be made to
work. The first thing to note is that the type of a variable and its
format are quite different properties. You want the type.
With the auto data,
sysuse auto
di "`: type make'"
will show "str18". Thus extracting the first three characters will
reveal whether a variable is of string type. However, testing for string
type on the -replace- command is testing too late. You need to test
before
you try the -replace-
You would need something like
foreach X of var X1-X50 {
local type = substr("`: type `X''", 1, 3)
if "`type'" == "str" {
replace `X'_new = 1 if `X' == "New"
}
}
In practice, I would rather use -capture confirm str var- or (indeed)
-ds- (like Maarten), but
this is just to show that your main idea can be made to work. The stuff
you wanted
is documented at -help extended_fcn-.
Nick
[email protected]
alvine.bissery
I would like to generate new variables using this command:
for var X1-X50 :replace X_new=1 if X=="New"
But some Xi variables are numeric because empty
This command stops when one of the Xi is numeric
How can I ask to execute this command only for string Xi variables ? Is
there a "format" function which returns the type of the variable ? If
this
exists, I could use:
for var X1-X50 :replace X_new=1 if X=="New" & format(X)==string
*
* 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/