在 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 

该代码也适用于任何三位数或更多位数的参数。