Stata 学习笔记(1):数值型与字符串型变量的转换
注:本文为 Stata 学习笔记,主要参照教科书:Baum, C. 2006.
《 An Introduction to Modern Econometrics Using Stata: Stata Press》 学习整理而得,内容未必完全正确,会随学习过程的推进不断补充、修改和更正,请谨慎参考,如有错误欢迎指正。
一、字符型转化为数值型(string-to-numeric)
命令一:
real(string)
real(string)
能将符合实数格式的字符串转换为实数,将不符合实数格式的字符串替换为缺失值:
real("5.2") + 1 = 6.2 * 符合实数格式的字符串转换为对应的实数
real("hello") = . * 不符合实数格式的字符串替换为缺失
因此,当某个变量错误地以字符串形式储存时,可以用
real()
函数将其转化为数值类型,例如:
gen sales = real(Sales)
命令二:
destring
语法格式:
-
该命令将字符型变量或变量列表
varlist
转化为数值型变量,而本身就是数值型变量的则保持不变。 -
与
real()
函数不同,使用destring
必须声明到底是生成新变量 ——generate(newvar)
,还是在原有的变量上进行替换 ——replace
, 但通常来说,生成新变量可能是更为稳妥的方法 -
如果没有声明
varlist
,即varlist
为空,那么destring
命令将把整个数据集中的所有变量都转化为数值型。如果数据集中有个别变量不想转化为数值型而想保留原来的格式,可以通过将这些变量添加到ignore()
选项中,从而忽略特定的变量、进行排除。
命令三:
encode
与上述两个命令将字符型变量转化为数值型变量不同,
encode
只能将字符变量转化为对应的数字编码(即生成一个同名的
value label
) 。
Do not applyencode
to a string variable that has purely numeric content (for instance, one that has been misclassified as a string variable) becauseencode
will attempt to create a value label for each distinct value of the variable.
From: Baum, C. 2006. 《 An Introduction to Modern Econometrics Using Stata: Stata Press》 P28
与之相对应,
encode
命令更适用于将以字符串形式显示的分类变量(性别、地区等)转化为数值型分类变量, 并进而生成对应数字编码的情形,用书本的话说明什么情况下会使用到
encode
:
Q: Why might you need toencode
a variable ?
A: Say that you wanted to retain the readable values of a specific variable for display but use the variable in statistical commands.
二、数值型转化为字符型(numeric-to-string)
与第一部分字符型转化为数值型的三个命令相对应,相反的三个命令可实现由数值型向字符型变量的转换。
命令一:strofreal(n)
将 n 转化为字符串,stata help 文档中给出的例子:
strofreal(4)+"F" = "4F"
strofreal(1234567) = "1234567"