在Stata

时间:2015-05-30 10:49:24

标签: stata

我正在尝试将Stata中的字符串变量A转换为字符串变量B,以便每个观察点具有固定长度。例如,字符串变量A是

85
01
3

我希望将其转换为另一个带有尾随零的字符串变量B,以便为每次观察获得长度为5

85000
01000
30000

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

2 个答案:

答案 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