我想知道如何从inrange()
中排除数字。
例如,如果我有一个变量A
:
1,2,3,4,5,6,7,8,9,10
我想从5
中排除inrange(A,2,8)
以产生以下内容:
2,3,4,7,8
答案 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)
上面的语法并不旨在显示完整的命令。我认为值始终是整数是默认的。