变量类型转换之encode&decode命令

本文作者:赵冰洁,中南财经政法大学金融学院
文字编辑:崔赵雯
技术总编:余术玲

  在往期推文《encode和decode--带你探索解码与编码的世界》中已经为大家介绍了在 Python 中有关编码和解码的两种数据处理方法: encode 和 decode,今天小编将和大家一起继续探索在 Stata 中进行变量类型转换的两个命令:encode & decode。让我们一起来看一下吧~

一、命令介绍

1. encode -- 字符型变量转换为数值型变量

  命令语法如下:

encode varname [if] [in] , generate(newvar) [label(name) noextend]

  该命令的常用选项:
(1)generate(newvar)
在使用 encode 命令时,generate(newvar) 选项是必须设定的,赋给转换后的数值型变量新的变量名——newvar。
(2)label(name)
该选项用于指定转换后的数值型变量的值标签名称。如果未指定 label( ) 选项,则转换后的数值型变量的值标签名称与其变量名称相同。
(3)noextend
使用 encode 命令时,在指定 noextend 选项的情况下,如果 label( ) 选项所指定的值标签中没有 varname 包含的值,则不会对 varname 进行编码。在默认情况下,label( ) 选项的值标签中不存在的任何值都将添加到该标签中。只有当 label( ) 选项指定了新生成变量的值标签,才可以指定 noextend 选项。

2. decode -- 数值型变量转换为字符型变量

  命令语法如下:

decode varname [if] [in] , generate(newvar) [maxlength(#)]

  该命令常用选项:
(1)generate(newvar)
在使用 decode 命令时,generate(newvar) 选项是必须设定的,赋给转换后的字符型变量新的变量名——newvar。
(2)maxlength(#)
maxlength( # ) 选项用于设定转换后的字符型变量的长度,#的设定必须是在1-32000字节之间。在默认情况下,字符型变量的长度为32000字节。

二、案例介绍

1. encode 命令示例

  接下来,以 Stata 的示例数据集为例,结合 lable( ) 选项介绍一下 encode 命令的具体使用。

clear all
webuse hbp2,clear
describe sex  /// 查看sex这一变量,观察其在内存中的存储类型

  结果如下:

image

  根据以上结果显示,可以看到 sex 这一变量在内存中的存储类型为字符型变量,且该变量没有值标签。接下来,我们就使用 encode 命令将其转换为数值型变量 gender,并通过 label( ) 选项为该变量添加值标签。

encode sex, generate(gender) label(sexlbl)  /// 生成新的数值型变量gender,并为其添加值标签
des gender  /// 查看gender这一变量,观察其转换之后的存储类型和值标签

  结果如下:

image
image

  查看数据窗口,可以看到新生成了一列变量 gender(蓝色字体标识),其观测值与原来的字符型变量 sex 的观测值一致,并且新变量的存储类型已经由原来的字符型变量转换为了数值型变量,同时通过 label( ) 选项添加了新的值标签 sexlbl。

  转换之后,gender 这一数值型变量就可以被看做是虚拟变量,每一个观测值都会有相应的数字序号表示,我们可以用这一变量进行实证分析。以t检验为例,结果如下:

image

2. decode 命令示例

clear all
webuse hbp3,clear
describe female  /// 查看female这一变量,观察其在内存中的存储类型

  结果如下:

image

  可以看到,female 这一变量在内存中的存储类型为数值型变量。接下来,我们通过使用 decode 命令将这一变量转换为字符型变量。

decode female, generate(gender_2)   /// 通过decode命令进行变量类型的转换,生成新的变量gender_2

des gender_2  /// 查看新变量gender_2,观察其在内存中的存储类型

  结果如下:

image

image

  查看数据窗口,我们可以看到新增了一列变量 gender_2,且新变量的存储类型为字符型。

三、使用误区

  在 Stata 中处理数据时,有时候需要将字符型变量转换为数值型变量。encodedestring 都是比较常用的命令,但是二者有区别。 encode 命令是给字符型变量重新编码,它只是返回了转换后的数值型变量的标签,而不是将原来的以字符型存储的数值变量转换为真正意义上的数值变量, 而且encode 命令会自动根据文字类别进行编号,并设定相应的[数字-文字对应表]。

  在上述案例介绍中,通过 encode 命令进行变量类型转换后,我们会得到如下结果:

image
image

  可以看到,在数据窗口中,新增变量的数据呈现蓝色字体,且有相应的[数字-文字对应表],即 1-female;2-male。所以, encode 命令在进行变量类型转换的同时会根据[数字-文字对应表]对原来字符型变量进行相应的分组,新变量的观测值以原来的字符型变量观测值显示,但是其真实值是1,2,3,......等表示序号的数值。

  为了更准确地使用 encode 命令和 destring命令,这里有两点小 tips:
(1)若想真正意义上地将字符型变量转换为数值型变量,则使用 destring 命令。
(2)若想为字符型变量观测值分类,贴上1,2,3......等表示序号的编码值,并且将原来的字符型数据设置为转换后的数值型变量的标签,则使用 encode 命令。

  以上就是关于 encode 命令和 decode命令的介绍了,更多的精彩内容大家可以通过 help 命令进行了解~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352