描述
destring 将字符串变量转换为数字变量。如果未指定 varlist ,destring 则将将数据集中的所有变量从字符串转换为数字型。ignore()中列出的字符将被删除。 varlist 中已变为数字的变量不会发生更改。destring 将空字符串 “ ” 和 “.” 视为 sysmiss (.) 并将字符串 “.a”, “.b”, ... , “.z” 解释为扩展缺失值 .a, .b, ... , .z;参阅 [U] 12.2.1 Missing values。destring 也会忽略任何前导或尾随空格,例如,“ ” 等同于“”, “ . ” 相当于“ . ”。
tostring 将 varlist 中的变量从数值型转换为字符串。并且使用最紧凑的字符串格式。如果 varlist 中已经是字符串的变量,将不会被转换。
快速入手
将 strg1 从字符串转换为数值型,并将结果放在 num1 变量中。
destring strg1, generate(num1)
同上所述,但忽略 strg1 中的%字符。
destring strg1, generate(num1) ignore(%)
As above, but return . for observations with nonnumeric characters
destring strg1, generate(num1) force
将 num2 从数值型转换字符串,并将结果放在 strg2 变量中。
tostring num2, generate(strg2)
同上所述,但格式为前导0和小数点后3位数。
tostring num2, generate(strg2) format(%09.3f)
语法
将字符串变量转换为数字变量
destring [varlist] , {generate(newvarlist)|replace} [destring_options]
将数字变量转换为字符串变量
tostring varlist , {generate(newvarlist)|replace} [tostring_options]
destring_选择项
generate(newvarlist):生成 newvar_1 ,..., newvar_k 表示 varlist中的每个变量。
replace:用数值变量替换varlist中的字符串变量。
ignore("chars" [, ignoreopts]):删除指定的非数字字符,字符或字节,以及非法的Unicode字符。
force:将非数字字符串转换为缺失值。
float:生成数值变量为 float 类型。
percent:将百分比变量转换为小数形式。
dpcomma: 将逗号作为小数转换为句点十进制格式。
tostring_选择项
generate(newvarlist) :生成 newvar_1 ,..., newvar_k 表示 varlist中的每个变量。
replace:用字符串变量替换 varlist 中的数字变量。
force: 强制转换,忽视信息丢失。
format(format) :使用指定格式转换。
usedisplayformat: 使用显示格式转换。
destring_选择项详细解释
必须指定 generate()或 replace 。 使用任一选项,如果任何字符串变量未包含使用 ignore()指定的非数字字符,则不会生成相应的变量,也不会替换该变量(除非指定了force)。
generate(newvarlist)指定为 varlist 中的每个变量创建一个新变量。 newvarlist 必须包含与 varlist 中的变量相同数量的新变量名。 如果未指定varlist,则 destring 为数据集中的每个变量生成数值变量; 然后 newvarlist 必须包含与变量中相同数量的新变量名数据集。 任何变量标签或特征都将复制到创建的新变量中。
replace 指定将 varlist 中的变量转换为数字变量。 如果未指定varlist,则 destring 尝试将所有变量从字符串转换为数值型。 并保留任何变量标签或特征。
ignore("chars" , ignoreopts ) 指定删除非数字字符。 ignoreopts 可能是aschars,asbytes 或非法的。 默认行为是将字符作为字符删除,这与指定 aschars 相同。 asbytes 指定删除 ignore 字符串中所有字符中包含的所有字节,无论这些字节是否形成完整的 Unicode 字符。 illegal指定删除所有非法 Unicode 字符,这对于删除 highASCII 字符很有用。 非法可能不会用 asbytes 指定。 如果删除了忽略字符串后,任何字符串变量仍包含任何非数字或非法 Unicode 字符,除非还指定了force,否则不会对该变量执行任何操作。 请注意,对于 Stata ,逗号是非数字字符; 另请参阅下面的 dpcomma 选项。
force 指定除了使用ignore()指定的任何字符串值之外,任何包含非数字字符的字符串值都被视为缺少数字值。
float 指定最初创建的任何新数值变量都是float类型。 默认值为double类型; 见[D] data types。 destring 尝试自动压缩每个新数字创建后的变量。
percent 删除变量值中找到的任何百分号,并将该变量的所有值除以100,将值转换为小数形式。 percent 本身意味着百分号“%”是ignore()的参数,但反之则不然。
dpcomma 指定将逗号作为十进制值的变量转换为具有十进制值的句点。
tostring_选择项详细解释
必须指定generate()或replace。如果将任何数字变量转换为字符串将导致信息丢失,除非指定force,否则不会生成任何变量。
generate(newvarlist) :指定为 varlist 中的每个变量创建一个新变量。newvarlist 必须包含与 varlist 中的变量相同数量的新变量名。 任何变量标签或特征都将复制到创建的新变量中。
replace:指定将 varlist 中的变量转换为字符串变量。 将保留任何变量标签或特征。
force: 指定强制转换即使它们导致信息丢失也是如此。 信息丢失意味着以下两种情况之一:1)real(string(varname,“format”))的结果不等于 varname; 也就是说,如果没有信息丢失,转换是不可逆的; 2)指定了 replace,但变量具有关联的值标签。在情况1中,通常最好指定 usedisplayformat 或 format()。在情况2中,在强制转换中将忽略值标签。
format(format) : 指定将数字格式用作string()函数的参数,该函数控制数值变量到字符串的转换。 例如,格式为%7.2f 指定在转换为字符串之前将数字四舍五入到小数点后两位。 无法使用usedisplayformat指定format()
usedisplayformat:指定对每个变量使用当前显示格式。例如,当使用指定了 %d 或 %t 格式的美国社会保险号或每日或其他日期时,此选项可能非常有用。无法使用format()指定usedisplayformat。
例子 1
use http://www.stata-press.com/data/r15/destring1
describe
list
destring, replace
describe
list
例子 2
我们的数据集包含变量日期,由于年份和月份之后的空格而被记录为字符串。如果我们想要删除空格。 destring会将其转换为数字并删除空格。
use http://www.stata-press.com/data/r15/destring2, clear
describe date
destring date, replace ignore(" ")
describe date
list date
例子3
我们的数据集包含变量日期,价格和百分比。 这些变量被读入 Stata作为字符串变量,因为它们包含空格,美元符号,逗号和百分号。我们想要删除所有这些字符并为包含数值的日期,价格和百分比创建新变量。 删除百分号后,我们要将百分比变量转换为十进制形式。
use http://www.stata-press.com/data/r15/destring2, clear
describe
destring date price percent, generate(date2 price2 percent2) ///
ignore("$ ,%")percent
describe
list
tostring
将数字数据转换为字符串等效项可能会有问题。与大多数软件一样,Stata 将数值数据保存为有限精度和二进制形式。 参见U] 13.12 Precision and problems therein。 如果未指定format(),则tostring 使用格式 %12.0g。 特别是,这种格式足以将保存为字节,整数或长整数的整数转换为字符串等效而不会损失精度。 但是,用户通常需要自己指定格式,特别是当数字数据具有小数部分时,由于某种原因,转换为字符串是必须的。
例子4
我们的数据集包含一个字符串月变量和数字年和日变量。我们希望将这三个变量转换为%td日期。
use http://www.stata-press.com/data/r15/tostring, clear
list
tostring year day, replace
generate date = month + "/" + day + "/" + year
generate edate = date(date, "MDY")
format edate %td
list
查看特征
每次发出 destring 或 tostring 命令时,都会在每个转换变量的特征列表中生成一个条目。 您可以键入 char list 并以查看这些特征。 在示例3之后,我们可以使用 char list 来查找 destring 命令删除了哪些字符。
网友评论