Stata中字符串格式的尾随零

Trailing zeros in string format in Stata

我正在尝试将 Stata 中的 string 变量 A 转换为 string 变量 B 这样每个观测值都有固定的长度。例如字符串变量A是

85
01
3

我想将它转换为另一个字符串变量 B 并带有 尾随零 以获得每个观察值的长度 5

85000
01000
30000

我知道为了放置 前导零 此代码有效 gen B= string(real(A),"%05.0f")。应该如何修改它以获得尾随零?

问题是您的新变量不是具有新格式的旧变量,而是完全不同的值。一种方式是:

clear
set more off

*----- example data -----

input ///
str2 A
85
01
3
end

list

*------ what you want -----

// desired length of string
local len = 5

// factor
gen xdif = 10 ^ (`len' - length(A))

// new values with new format
gen B0 = real(A) * xdif
gen B = string(B0,"%0`len'.0f")

list

如果你愿意,你可以把它做成一行。

另一种方法同样适用于填充包含非数字值的字符串。

clear
set more off

*----- example data -----

input ///
str3 A
85
01
3
XYZ
"D F"
end

list

*------ what you want -----

// desired length of string
local len 5

// desired trailing character
local pad 0

// new values
gen B0 = "`pad'"*`len'
gen B1 = A+B0
generate str`len' B3 = B1

// new values in a single command
generate str`len' B = A+"`pad'"*`len'

list