我正在尝试将Stata中的字符串变量A
转换为字符串变量B
,以便每个观察点具有固定长度。例如,字符串变量A是
85
01
3
我希望将其转换为另一个带有尾随零的字符串变量B
,以便为每次观察获得长度为5
85000
01000
30000
我知道为了将前导零这个代码有效
gen B= string(real(A),"%05.0f")
。应如何修改以获得尾随零?
答案 0 :(得分:1)
问题是你的新变量不是具有新格式的旧变量,而是完全不同的值。一种方法是:
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
如果你愿意的话,你可以把它作为单行。
答案 1 :(得分:1)
一种替代方法,可以很好地填充包含非数字值的字符串。
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