本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

数值型字符型转换,destring tostring _stata

stata培训 cdadata 51507℃

数值型字符型转换,destring tostring

关键词:数据分析数据分析师
. tostring age,replace
age was byte now str2
. d age
              storage  display     value
variable name   type   format      label      variable label
————————————————————————————————–
age             str2   %9s                    
. destring age,replace
age has all characters numeric; replaced as byte
. d age
              storage  display     value
variable name   type   format      label      variable label
————————————————————————————————–
age             byte   .0g                 
.
******************************************************

如何将stata中的字符型数据转为数值型

你可以这样处理,先保持这个变量为字符型的变量,然后有substr的命令,提取前四位,只要年份,然后再转化为数值型,就可以计算了。具体来说说着这样的
gen year=substr(accouperi,1,4)
生成一个新变量,这个新变量叫year
destring year, replace
这个命令就是把字符型转化为数值型的命名。

数据类型转换之字符型-数值型

Stata中有两种数据类型:字符型数值型。在我们处理数据的时候,经常会遇到原始数据的数据类型不是我们所需要的数据类型,这就需要我们将原始数据中的一些数据类型进行转换,从而将其转成我们期望的数据类型。Stata也提供了一些相关命令。其中,字符型变量转换为数值型变量的命令有:real()函数,encode和destring命令;数值型变量转换为字符型变量的命令有:strofreal()函数,decode和tostring命令,它们相互对应,那到底有哪些区别与联系呢?

今天我们先来讲一讲如何把字符型变量转化为数值型变量

一、 命令介绍

encode命令:只可以将以字符型格式储存的非数值变量转换为数值型变量,它的返回值只是1,2,3……的序号变量,相同属性的观测值赋值相同,相当于给字符变量重新编码,并且将原来的字符型数据设置为转换后的数值型变量的标签。常用选项介绍如下:

数值型字符型转换,destring tostring _stata

destring命令:将以字符型格式储存的数值变量转化为数值型变量。常用选项介绍如下:

数值型字符型转换,destring tostring _stata

real(s)函数:同destring命令一样,可以将以字符型格式储存的数值s转化为数值型变量。若s是以字符型格式储存的非数值变量返回缺失值;另外,real()函数还可以对某一个具体观测值实现转变。

二、例子说明

为了方便介绍选项,我们输入如下数据,代码如下:

clear

input ///

str3 num str2 name str10 per str6 income

-1 a “10%” “9747”

1 b “62%” “1,234”

1 a “53%” “938.9”

-1 c “48,6%” “8344”

2 d “58%” “2398”

-2 e “46%” “-”

-3 c “78%” “53822”

3 d “92,2%” “na”

-1 e “65%” “$28477”

1 b “3,6%” “n/a”

end

  • 字符型格式储存的数值变量num的转换

代码如下:

encode num, gen(num1)

destring num, gen(num2)

gen num3=real(num)

br num num1 num2 num3 in 1/5

数值型字符型转换,destring tostring _stata

可以看到,对于字符型格式储存的数值变量的3种转换形式,输出结果基本没有区别,但是,num1与num2、num3的显示颜色不一样,需要注意的是,encode命令只是对字符变量重新编码,输出结果不应该和其他两种转换方式所得结果是一样的,这是怎么回事呢?我们删除变量的标签值,来看看输出结果会发生什么变化:

label drop _all

br num num1 num2 num3

数值型字符型转换,destring tostring _stata

可以看到,num1只是对变量num进行数值排序。说明encode命令并非真正意义上的将字符型变量转换为数值型变量,它只是返回了变量的标签。

  • 字符型格式储存的非数值变量name的转换

具体代码如下:

encode name, gen(name1) label(xing)

destring name, gen(name2)

gen name3=real(name)

list name name1 name2 name3

stata提示name2没有被找到。那是因为name中有非数字特征,destring命令无法转换,说明该命令只能对字符型格式储存的数值变量起作用,如果必须转换就加force选项,但返回值和real()返回的一样,是缺失的。

.destring name, gen(name2) force

br name name1 name2 name3 in 1/4

数值型字符型转换,destring tostring _stata

  • 字符型格式储存的混合变量income的转变

为了转换的方便,需要先用tab命令进行查看各个变量不同的非数字特征,代码如下:

tab income if regexm(income, “[^0-9.]”)

数值型字符型转换,destring tostring _stata

然后用destring命令进行转换,代码如下:

destring income, ignore(“$” “-” “,” “na” “n/a”) gen(income1)

br income income1

数值型字符型转换,destring tostring _stata

前面我们用正则表达式查看了非法数字的类型,当然在这里也我们可以不用ignore选项而选择用正则表达式将上述非法数字进行替换,然后进行转变,具体命令如下:

gen income2=ustrregexra(income,”[^d.]”,””)

destring income2, gen(income3)

br income income2 income3

可以看到相同结果:

数值型字符型转换,destring tostring _stata

最后,以变量per的转换为例,我们介绍一下命令destring的选项percent和dpcomma的用法,代码如下:

destring per, gen(per1) percent dpcomma

br per per1

数值型字符型转换,destring tostring _stata

转载请注明:数据分析 » 数值型字符型转换,destring tostring _stata

喜欢 (25)or分享 (0)