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")