在 Stata 中拆分值并将它们保存在新变量中
Splitting values in Stata and save them in a new variable
我有一个数值变量类似于以下系统
1
2
12
21
2
我想拆分长度 > 1 的值并将值的后半部分放入
在另一个变量中。
因此第二个变量的值为:
.
.
2
1
.
理论上我只会使用一个简单的 replace
语句,但我正在寻找一个 code/loop,它将
识别两位数的值并自动拆分它们并将它们保存在第二个变量中。因为随着时间的推移,将会添加更多的观察结果,我无法为超过 10k 个案例手动完成此任务。
这是一种方法:
clear
input foo
1
2
12
21
2
end
generate foo1 = floor(foo/10)
generate foo2 = mod(foo, 10)
list
+-------------------+
| foo foo1 foo2 |
|-------------------|
1. | 1 0 1 |
2. | 2 0 2 |
3. | 12 1 2 |
4. | 21 2 1 |
5. | 2 0 2 |
+-------------------+
有关这些功能的更多信息 here, here and here。
如果第一部分的零应该丢失,那么
replace foo1 = . if foo1 == 0
或(一次完成)
generate foo1 = floor(foo/10) if foo >= 10
该代码也适用于任何三位数或更多位数的参数。
我有一个数值变量类似于以下系统
1
2
12
21
2
我想拆分长度 > 1 的值并将值的后半部分放入 在另一个变量中。
因此第二个变量的值为:
.
.
2
1
.
理论上我只会使用一个简单的 replace
语句,但我正在寻找一个 code/loop,它将
识别两位数的值并自动拆分它们并将它们保存在第二个变量中。因为随着时间的推移,将会添加更多的观察结果,我无法为超过 10k 个案例手动完成此任务。
这是一种方法:
clear
input foo
1
2
12
21
2
end
generate foo1 = floor(foo/10)
generate foo2 = mod(foo, 10)
list
+-------------------+
| foo foo1 foo2 |
|-------------------|
1. | 1 0 1 |
2. | 2 0 2 |
3. | 12 1 2 |
4. | 21 2 1 |
5. | 2 0 2 |
+-------------------+
有关这些功能的更多信息 here, here and here。
如果第一部分的零应该丢失,那么
replace foo1 = . if foo1 == 0
或(一次完成)
generate foo1 = floor(foo/10) if foo >= 10
该代码也适用于任何三位数或更多位数的参数。