stata中将文字型变量值变为数值型,用gen为什么出现type mismatch?

type mismatch 顾名思义,数据形式不匹配,转换一下数据形式,即字符型和数值型转换一下试试,用tostring 或者destring

你对这个回答的评价是?

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

如题,数值型变量的长度不同,有8位有9位有十几位的,怎么才能统一取后7位呢?

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!


在数据处理中,我们可能需要将多个变量拼接为一个变量。这一操作可以通过replace或gen命令实现。但是,这种方法仅适用于字符型变量的拼接。当各个变量数据类型不同时,Stata将提示“type mismatch”的错误。

例如,当前路径下存在如下数据集:

使用describe命令查看各个变量类型,如下:

可知,变量company和make均为字符型,gear_ratio为浮点型,foreign为字节型,其余的为整值型。我们使用gen命令将变量company和make拼接在一起,公司名和人名用冒号隔开,执行程序与结果如下:

这样,两个字符型变量便拼接在一起了。

但在实际操作中,我们可能还需要拼接更多的变量,较为直接的处理思路是现将变量转换为字符型,其次逐一拼接。但这种方法较为繁琐,尤其是存在多个拼接变量且需添加分隔符时更加难以操作。那么,有没有什么命令可以实现变量快速拼接,并在各个变量间添加分隔符呢?我们介绍两种简单方法。

catenate命令可以将字符型或数值型变量拼接在一起,并生成一个新的字符型变量。在拼接过程中,可自动转化变量类型,并可定义变量拼接范围。其基本语法如下:

其中,punct(punctchars)选项用于定义拼接变量间的分隔符,默认以空格分隔。当然,也可使用punct(no)选项,表示不使用分隔符。

在本例中,我们尝试将数据集中前5行的所有变量进行拼接,并以逗号分隔。执行程序与结果如下:

concat()函数是egen命令自带的一个函数,也可以实现不同类型变量的拼接。其基本语法如下:

其中,format(%fmt)选项可用于定义数值型变量在拼接后的显示样式;decode选择可进行解码;maxlength()选项用于定义变量标签最大长度。在默认情况下,各个变量紧密连接,中间不存在空格等符号。

在本例中,我们依然将所有变量进行拼接,并设置数值型变量的显示样式为%5.3f,变量之间以分号分隔。执行程序与运行结果如下:

通过以上两种方法,我们便实现了变量的快速拼接。尤其是当变量名具有一定规律性,如v1、v2、v3…时,采用以上方法将更加高效,仅需执行“catenate v = v*, p(,)” 或“egen v =concat(v*), p(,)”即可,极大简化了数据处理程序。

我要回帖

更多关于 stata数值型变成字符型 的文章

 

随机推荐