从inrange()函数中排除值

时间:2019-05-08 08:37:21

标签: stata

我想知道如何从inrange()中排除数字。

例如,如果我有一个变量A

1,2,3,4,5,6,7,8,9,10

我想从5中排除inrange(A,2,8)以产生以下内容:

2,3,4,7,8

2 个答案:

答案 0 :(得分:3)

您还可以结合使用inlist()inrange()

clear
set obs 10

generate A = _n
generate B = A if inrange(A, 2, 8)
generate C = A if inrange(A, 2, 8) & !inlist(A, 2, 5)

list

     +------------+
     |  A   B   C |
     |------------|
  1. |  1   .   . |
  2. |  2   2   . |
  3. |  3   3   3 |
  4. |  4   4   4 |
  5. |  5   5   . |
     |------------|
  6. |  6   6   6 |
  7. |  7   7   7 |
  8. |  8   8   8 |
  9. |  9   .   . |
 10. | 10   .   . |
     +------------+

如果要排除多个值,这将很有用。

答案 1 :(得分:2)

inrange()是函数,而不是命令。没有用于指定异常的隐藏语法。如果要在2到8之间,而不是5,那么有很多方法可以做到这一点,例如

if inrange(A, 2, 4) | inrange(A, 6, 8) 

if inrange(A, 2, 8) & A != 5 

if inlist(A, 2, 3, 4, 6, 7, 8) 

上面的语法并不旨在显示完整的命令。我认为值始终是整数是默认的。