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

From |
"Nick Cox" <n.j.cox@durham.ac.uk> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
st: RE: using if sentences in Stata |

Date |
Thu, 27 Nov 2008 17:59:20 -0000 |

First, note that if shift == -1 { means if shift[1] == -1 { which is probably why you are not getting the results you expect. There is a big difference between the -if- command and the -if- qualifier. This has been the focus of several recent threads on this list, including one started by Ashim Kapoor. See also the FAQ FAQ . . . . . . . . . . . . . . . . . . . . . if command vs. if qualifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J. Wernow 6/00 I have an if command in my program that only seems to evaluate the first observation, what's going on? http://www.stata.com/support/faqs/lang/ifqualifier.html Also, note that (e.g.) replace flow= (-1*`cap') -replace-s in _all observations. You can combine two or more -if-s. You just use as many conditions as are needed together with whatever operators are needed. . sysuse auto, clear . list foreign rep78 if foreign == 1 & rep78 == 4 +-----------------+ | foreign rep78 | |-----------------| 55. | Foreign 4 | 56. | Foreign 4 | 58. | Foreign 4 | 59. | Foreign 4 | 62. | Foreign 4 | |-----------------| 63. | Foreign 4 | 70. | Foreign 4 | 72. | Foreign 4 | 73. | Foreign 4 | +-----------------+ . list foreign rep78 if foreign == 1 | rep78 == 4 +------------------+ | foreign rep78 | |------------------| 5. | Domestic 4 | 15. | Domestic 4 | 24. | Domestic 4 | 29. | Domestic 4 | 30. | Domestic 4 | |------------------| 33. | Domestic 4 | 35. | Domestic 4 | 38. | Domestic 4 | 47. | Domestic 4 | 53. | Foreign 5 | |------------------| 54. | Foreign 3 | 55. | Foreign 4 | 56. | Foreign 4 | 57. | Foreign 5 | 58. | Foreign 4 | |------------------| 59. | Foreign 4 | 60. | Foreign 3 | 61. | Foreign 5 | 62. | Foreign 4 | 63. | Foreign 4 | |------------------| 64. | Foreign . | 65. | Foreign 3 | 66. | Foreign 5 | 67. | Foreign 5 | 68. | Foreign 5 | |------------------| 69. | Foreign 5 | 70. | Foreign 4 | 71. | Foreign 5 | 72. | Foreign 4 | 73. | Foreign 4 | |------------------| 74. | Foreign 5 | +------------------+ My impression is that you need -if- qualifiers, but you are using -if- commands. Only very rarely in practice does an -if- command pivot on a variable's value. On a minor detail, negation replace flow= -`cap' is even easier than multiplying by -1. Nick n.j.cox@durham.ac.uk Linn Renée Naper I am trying to program a "double if-sentence" in Stata. Is this possible? And what do I do wrong here? Here is what I write. The results is that Stata only performs the commands after the second "else": replace flow=`cable_cap'. if shift==-1 {{ if (flow[_n-1] + `cap')<`add' { replace flow= (-1*`cap') } else { replace flow=flow[_n-1]-`add' } } else { if (flow[_n-1] - `cap')>`add' { replace flow=`cap' } else { replace flow=flow[_n-1]+`add' } } I thus try to write a command where the executed command if the result (if shift==-1) is true also includes an if-formulation, and the same with the executed command in the case where the result of the initial criterion is false. If the shift value is -1, what I do with the variable flow depends on whether the sum (flow[_n-1]+`cap') is larger or smaller than the value given in `add'. Similarly, if the shift variable isn't -1 but 1, what I do with flow depends on the sum (flow[_n-1]-`cap') and whether this sum is smaller or larger than the value given by `add'. * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: using if sentences in Stata***From:*Linn Renée Naper <linn.naper@ecgroup.no>

- Prev by Date:
**Re: st: using if sentences in Stata** - Next by Date:
**st: hprescott for panel w/ gaps** - Previous by thread:
**Re: st: using if sentences in Stata** - Next by thread:
**st: hprescott for panel w/ gaps** - Index(es):

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