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

语法格式:

来源:stata help 文件
  • 该命令将字符型变量或变量列表 varlist 转化为数值型变量,而本身就是数值型变量的则保持不变。
  • real() 函数不同,使用 destring 必须声明到底是生成新变量 —— generate(newvar) ,还是在原有的变量上进行替换 —— replace , 但通常来说,生成新变量可能是更为稳妥的方法
  • 如果没有声明 varlist ,即 varlist 为空,那么 destring 命令将把整个数据集中的所有变量都转化为数值型。如果数据集中有个别变量不想转化为数值型而想保留原来的格式,可以通过将这些变量添加到 ignore() 选项中,从而忽略特定的变量、进行排除。

命令三: encode

与上述两个命令将字符型变量转化为数值型变量不同, encode 只能将字符变量转化为对应的数字编码(即生成一个同名的 value label ) 。

Do not apply encode to a string variable that has purely numeric content (for instance, one that has been misclassified as a string variable) because encode 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 to encode 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"