String 向字符串中添加零而不生成新变量
我试图将零添加到字符串变量中,使所有级别的变量都具有相同的位数(假设String 向字符串中添加零而不生成新变量,string,expression,stata,String,Expression,Stata,我试图将零添加到字符串变量中,使所有级别的变量都具有相同的位数(假设3) 我通过生成一个新变量来实现这一点,该变量存储了我需要添加到每个观察值中的位数,以便达到3: generate pi=3-strlen(pine) replace pine= ("0"*pi) + pine if strlen(pine)<3 generate pi=3-strlen(pine) replace pine=(“0”*pi)+pine如果strlen(pine)您的方法不起作用,因为它只对第一个观察值的
3
)
我通过生成一个新变量来实现这一点,该变量存储了我需要添加到每个观察值中的位数,以便达到3
:
generate pi=3-strlen(pine)
replace pine= ("0"*pi) + pine if strlen(pine)<3
generate pi=3-strlen(pine)
replace pine=(“0”*pi)+pine如果strlen(pine)您的方法不起作用,因为它只对第一个观察值的表达式求值:
. display `= 3 - strlen(pine)'
1
不需要单引号:
replace pine = ("0" * (3-strlen(pine) ) ) + pine if strlen(pine) < 3
+--------------------+
| tina bina pine |
|--------------------|
1. | 1 10 099 |
2. | 1 11 099 |
3. | 2 11 099 |
4. | 2 11 099 |
5. | 3 12 00. |
|--------------------|
6. | 4 12 888 |
7. | 5 14 088 |
8. | 6 15 777 |
9. | 7 16 077 |
10. | 8 17 000 |
|--------------------|
11. | 8 18 007 |
+--------------------+
replace pine=(“0”*(3-strlen(pine)))+如果strlen(pine)<3,则为pine
+--------------------+
|蒂娜比纳松|
|--------------------|
1. | 1 10 099 |
2. | 1 11 099 |
3. | 2 11 099 |
4. | 2 11 099 |
5. | 3 12 00. |
|--------------------|
6. | 4 12 888 |
7. | 5 14 088 |
8. | 6 15 777 |
9. | 7 16 077 |
10. | 8 17 000 |
|--------------------|
11. | 8 18 007 |
+--------------------+
我知道已经有了一个公认的答案,但我想放弃我的建议。这可能比另一个答案简单一点,而且很容易解释。您只需要将实数的字符串变量替换为前导零,并将其保留为字符串。您可以通过运行以下命令轻松完成此操作:
replace pine = string(real(pine),"%03.0f")
根据您的目标,这可能比前面的答案更好,因为它将丢失的值保持为丢失,而不向其添加零。希望这有帮助
replace pine = ("0" * (3-strlen(pine) ) ) + pine if strlen(pine) < 3
+--------------------+
| tina bina pine |
|--------------------|
1. | 1 10 099 |
2. | 1 11 099 |
3. | 2 11 099 |
4. | 2 11 099 |
5. | 3 12 00. |
|--------------------|
6. | 4 12 888 |
7. | 5 14 088 |
8. | 6 15 777 |
9. | 7 16 077 |
10. | 8 17 000 |
|--------------------|
11. | 8 18 007 |
+--------------------+
replace pine = string(real(pine),"%03.0f")