Код, который вы вводите, не является допустимым синтаксисом:
clear
set obs 10
generate num = _n
generate type = odd if inlist(num, 1,3,5,7,9)
odd not found
r(111);
Вы можете получить то, что вы хотите:
generate type = "odd" if inlist(num, 1,3,5,7,9)
И вы можете сделать оба одновременно, используя cond()
function:
generate type = cond(inlist(num, 1,3,5,7,9), "odd", "even")
Однако наличие этой переменной в виде string будет иметь ограниченное значение для последующего использования.
Впоследствии вы можете использовать encode
команда для создания новой переменной числового типа:
encode type, generate(type2)
list
+--------------------+
| num type type2 |
|--------------------|
1. | 1 odd odd |
2. | 2 even even |
3. | 3 odd odd |
4. | 4 even even |
5. | 5 odd odd |
|--------------------|
6. | 6 even even |
7. | 7 odd odd |
8. | 8 even even |
9. | 9 odd odd |
10. | 10 even even |
+--------------------+
Хотя переменные type
и type2
кажутся идентичными, они действительно имеют другой тип:
list, nolabel
+--------------------+
| num type type2 |
|--------------------|
1. | 1 odd 2 |
2. | 2 even 1 |
3. | 3 odd 2 |
4. | 4 even 1 |
5. | 5 odd 2 |
|--------------------|
6. | 6 even 1 |
7. | 7 odd 2 |
8. | 8 even 1 |
9. | 9 odd 2 |
10. | 10 even 1 |
+--------------------+
Вот как вы можете сделать это с type
, являющимся числовой переменной:
generate type = mod(num, 2)
list
+------------+
| num type |
|------------|
1. | 1 1 |
2. | 2 0 |
3. | 3 1 |
4. | 4 0 |
5. | 5 1 |
|------------|
6. | 6 0 |
7. | 7 1 |
8. | 8 0 |
9. | 9 1 |
10. | 10 0 |
+------------+
Затем вы создаете метку значения и присоединяете ее к переменной type
:
label define numlab 0 "even" 1 "odd"
label values type numlab
list
+------------+
| num type |
|------------|
1. | 1 odd |
2. | 2 even |
3. | 3 odd |
4. | 4 even |
5. | 5 odd |
|------------|
6. | 6 even |
7. | 7 odd |
8. | 8 even |
9. | 9 odd |
10. | 10 even |
+------------+
Если вы хотите, чтобы помечались нечетные числа, вы можете просто сделать:
label define numlab 1 "odd"
Если вы позже передумаете и захотите добавить метку для четных чисел:
label define numlab 0 "even", add