楼主: heavensea
9921 6

? 将多个虚拟变量 合为一个变量 [推广有奖]

  • 0关注
  • 3粉丝

天堂海盟主

已卖:27份资源

讲师

14%

还不是VIP/贵宾

-

威望
0
论坛币
1037 个
通用积分
6.1776
学术水平
2 点
热心指数
3 点
信用等级
0 点
经验
12993 点
帖子
347
精华
0
在线时间
503 小时
注册时间
2005-10-25
最后登录
2024-5-7

楼主
heavensea 发表于 2010-7-22 17:03:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
知道了一个分组变量生成多个虚拟变量,现在碰到了一个相反的问题,如何根据多个虚拟变量合成一个分组变量,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:多个虚拟变量 虚拟变量 变量生成 变量 虚拟

实践出真知!

沙发
sungmoo 发表于 2010-7-22 17:45:55
g x=x1+2*x2+3*x3+4*x4+…

藤椅
heavensea 发表于 2010-7-22 19:52:18
好办法,我也是这样做的。一开始还以为类似反"ta",之类的用法
实践出真知!

板凳
jzhyue 发表于 2010-7-25 12:25:11
sungmoo 发表于 2010-7-22 17:45
g x=x1+2*x2+3*x3+4*x4+…
如果不考虑tab后的变量是否连续、是否含有0
gen b2=x1+2*x2+3*x3+4*x4+5*x5+6*x6+7*x7

reshape long
drop if
等效

有个问题:tab后的变量如果不连续,如果含有0,会出现差异。如
clear
set obs 10
gen a=_n
set seed 123546987
gen b=int(10*uniform())
tab  b,gen(x)
gen b2=x1+2*x2+3*x3+4*x4+5*x5+6*x6+7*x7
reshape long x,i(a) j(b1)
drop if x==0

报纸
voodoo 发表于 2010-7-26 15:07:07
sungmoo 发表于 2010-7-22 17:45
g x=x1+2*x2+3*x3+4*x4+…
用这种方法新生成的x和原哑巴量xi之间的关系非唯一,如(0010)→3,而(1100)→3,这是否有问题呢?当然,假如原哑变量是由tab, gen()命令生成的话将不存在此问题。

个人认为用
g x=x1+2*x2+4*x3+8*x4+...
是否会更合理些?
巫毒上传,必属佳品!
坛友下载,三思后行!

地板
voodoo 发表于 2010-7-26 15:36:52
sungmoo 发表于 2010-7-22 17:45
g x=x1+2*x2+3*x3+4*x4+…
也可用egen x=group(x1-x4),好像是命令gen x=x1+2*x2+3*x3+4*x4+… 的反序。
巫毒上传,必属佳品!
坛友下载,三思后行!

7
h3327156 发表于 2010-7-26 20:05:16
我这里提供一个方法,假设我要把年龄做分类,40岁以下叫零,
而40岁到45岁以下叫1【含40岁不含45岁】,45岁到50岁以下叫2【含45岁不含50岁】...
gen agegroup=(age>=40)+(age>=45)+(age>=50)+(age>=55)+(age>=60 & age<65)

同样的,照前面各位大大的方法,稍做修正,
gen x=(x1=1)+(x1=1 | x2=1)+(...)+...

=右边括号视为0与1的变数

参考看看吧!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-7 08:33