楼主: yellowriver
1669 2

[Stata初级班] 连老师,关于缺漏值的一个小问题 [推广有奖]

  • 0关注
  • 4粉丝

VIP

博士生

38%

还不是VIP/贵宾

-

威望
0
论坛币
10028 个
通用积分
22.7632
学术水平
21 点
热心指数
26 点
信用等级
19 点
经验
3133 点
帖子
164
精华
0
在线时间
170 小时
注册时间
2007-11-4
最后登录
2019-5-18

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
连老师,您好!我目前数据中a13变量是一个人的教育水平:
a13         0=文盲
               1=小学
               2=中学
               3=专科
               4=大学本科
               5=不回答
我现在想创建新的一个变量a13a, 使有受过高等教育的人(a13=3或4)标为1,其他为0,保留原有a13的缺漏值, 利用cond()函数,但如何保留原有的缺漏值呢?我的命令为:
gen higher_edu = cond(a13==3 | a13==4, 1, 0, . ) 但结果是原有的缺漏值也变为0了,我想保留这757个缺漏值,怎么实施命令呢?


原有变量a13 的codebook结果如下:
--------------------------------------------------------------------------------------------------------------------------------------------
a13                                                                                                                               Edu Level
--------------------------------------------------------------------------------------------------------------------------------------------

                  type:  numeric (byte)

                 range:  [0,5]                        units:  1
         unique values:  6                        missing .:  757/5653

            tabulation:  Freq.  Value
                            10  0
                            70  1
                           717  2
                          2586  3
                          1227  4
                           286  5
                           757  .
二维码

扫码加我 拉你入群

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

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

关键词:连老师 缺漏值 小问题 codebook missing 老师 缺漏

沙发
yellowriver 发表于 2010-5-4 09:20:51 |只看作者 |坛友微信交流群
嗯,经常都是发了帖子之后的几分钟内自己琢磨出应该怎么处理这个问题了。
可行的做法是在后面跟一个replace命令
gen higher_edu = cond(a13==3 | a13==4, 1, 0)
replace higher_hedu=. if a13==.

不过有没有可以直接在cond()函数中保留missing value 的方法呢?
yellowriver 发表于 2010-5-4 09:08
连老师,您好!我目前数据中a13变量是一个人的教育水平:
a13         0=文盲
               1=小学
               2=中学
               3=专科
               4=大学本科
               5=不回答
我现在想创建新的一个变量a13a, 使有受过高等教育的人(a13=3或4)标为1,其他为0,保留原有a13的缺漏值, 利用cond()函数,但如何保留原有的缺漏值呢?我的命令为:
gen higher_edu = cond(a13==3 | a13==4, 1, 0, . ) 但结果是原有的缺漏值也变为0了,我想保留这757个缺漏值,怎么实施命令呢?


原有变量a13 的codebook结果如下:
--------------------------------------------------------------------------------------------------------------------------------------------
a13                                                                                                                               Edu Level
--------------------------------------------------------------------------------------------------------------------------------------------

                  type:  numeric (byte)

                 range:  [0,5]                        units:  1
         unique values:  6                        missing .:  757/5653

            tabulation:  Freq.  Value
                            10  0
                            70  1
                           717  2
                          2586  3
                          1227  4
                           286  5
                           757  .

使用道具

藤椅
arlionn 在职认证  发表于 2010-5-4 09:45:39 |只看作者 |坛友微信交流群
320
321 *-2.1.2.6 利用条件函数产生虚拟变量
322
323 *- cond() 函数
324
325 * 基本语法:cond(s,a,b) | cond(s,a,b,c)
326 * 取值:
327 * a if 表达式 s 为真;
328 * b if 表达式 s 为假;
329 * c if 表达式 s 为缺漏值
330 * 示例:
331 sysuse nlsw88, clear
332 gen dum1 = cond(hours>40, 1, 0, .)
333 list hours dum1 in 1/20
334 gen dum2 = cond(hours>40&hours!=., 1, 0, .)
335 list hours dum1 dum2 in 1/20 // 注意此处的区别
336
337 gen dum_ratio = cond(wage/hours>0.5, 1, 0)
338 list wage hours dum_ratio in 1/20
339
340

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 08:09