您的位置:

Stata中的字符串函数——statadestring

一、statadestring命令

在Stata中,statadestring命令可以对字符串变量进行转换,将字符串变量转化为数值变量或日期变量类型。当字符串变量需要进行数值运算或排序时,我们可以使用该命令进行转换。

语法格式如下:

statadestring varname [if] [in] [, gen(newvarname) fvfmt(stringfmt) fvlo(numbformat) fvhi(numbformat) replace]

其中,varname表示需要进行转换的字符串变量名;gen(newvarname)表示将转换后的变量生成一个新的变量名;fvfmt(stringfmt)表示在对字符串转换为数值类型时,使用的格式字符串;fvlo(numbformat)和fvhi(numbformat)表示对于含有无穷大或缺失值的字符串,转换后的取值方式。

下面是一个实例:

sysuse auto, clear
list price rep78 gear_ratio, clean noobs

statadestring rep78

list price rep78 gear_ratio rep78num, clean noobs

这个实例将rep78字符串变量转换为rep78num数值变量,并将其添加到了数据集中。

二、statadestring函数

在Stata中,statadestring函数可以将一个字符串类型的变量转换为数值类型。

语法格式如下:

statadestring(expression [,stringfmt])

其中,expression表示需要转换的含有数字的字符串变量或字符串,stringfmt表示使用的格式字符串。

下面是一些实例:

clear

input str10 strvar
"10"
"3.4"
"5.2"
"." 
".1"
"1.0e-06"
"23.4"

end

gen numvar = statadestring(strvar) // 转化为数值变量
display numvar

该实例中,将strvar中的字符串转化为numvar数值变量。

三、statadestring小数位数变少

在Stata中,当字符串类型的数字太长(比如有很多小数位)时,转化为数值类型后也会按照原来的小数位数显示。可以通过使用stringfmt参数来控制小数位数。

例如:

clear

input str10 strvar
"3.45678"
end

gen numvar = statadestring(strvar, "%10.2f") // 保留两位小数
format numvar %10.2f // 控制输出格式
display numvar

通过设置stringfmt参数,将小数位控制为保留2位。

四、statadestring不管用

在Stata中,有时候statadestring在转换过程中可能会出现问题,例如在使用中输出全部为missing或者valuelabels里的内容不正确等。这时候可以尝试使用其他函数或命令进行转换。

例如:

clear

input str10 strvar
"3.4"
"5.2"
"8.1"
"2.1"
"5.666"
end

gen numvar = real(strvar) // 使用real函数进行转换
display numvar

该实例中,使用real函数进行字符串转换,可以得到正确的结果。

五、stata的string怎么改

在Stata中,可以使用replace命令将字符串变量进行修改。

例如:

sysuse auto, clear
list rep78, clean noobs

replace rep78 = "3" if rep78 == "3"
list rep78, clean noobs

该实例中,将rep78中所有为字符串"3"的值改为字符串"4"。

六、stata的string

在Stata中,可以通过string命令来创建和修改字符串变量。

例如:

sysuse auto, clear

string make2 = make + "2"
list make make2, clean noobs

该实例中,将make字符串变量加上"2"之后,生成一个新的字符串变量make2,并将其添加到了数据集中。

七、stata的string变成数值

在Stata中,有时候需要将字符串变量转换为数值变量类型。可以使用上文提到的statadestring命令或函数进行转换。

例如:

sysuse auto, clear
list price rep78, clean noobs

statadestring rep78

list price rep78num, clean noobs

该实例中,将rep78字符串变量转换为rep78num数值变量,并将其添加到了数据集中。