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
我正在尝试将 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