Mike Lacy writes in part:
> One feature of Stata with which I continue to experience difficulty
> concerns how to assign a value to a variable based on a run time
> contingency. As a simple illustration, consider the goal of assigning
> a uniform r.v. value to a variable, while rejecting values less than,
> say, 0.8. If -while- was sensitive to run time values of variables,
> I would do:
>
> gen x = uniform()
> while (x < 0.8) {
> replace x = uniform()
> }
>
> Obviously, this construct that would work in many languages does not
> work as desired in Stata, and just as obviously, there are other ways
> to accomplish the same end in Stata [ gen x = 0.8 + 0.2*uniform() ].
The general approach is to recognize that Stata is inherently vectorized.
Therefore,
. gen x = uniform()
. replace x = uniform() if x < 0.8
accomplishes what you want.
The above says replace x only if the currrent (run time) value of x is less than 0.8.
Tom
-----------------------------------------
CONFIDENTIALITY NOTE: This e-mail message, including any attachment(s),
contains information that may be confidential, protected by the
attorney-client or other legal privileges, and/or proprietary non-
public information. If you are not an intended recipient of this
message or an authorized assistant to an intended recipient, please
notify the sender by replying to this message and then delete it from
your system. Use, dissemination, distribution, or reproduction of this
message and/or any of its attachments (if any) by unintended recipients
is not authorized and may be unlawful.
*
* 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/