全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1877 5
2011-07-07
有数据如附件:
group.rar
大小:(2.4 KB)

 马上下载

本附件包括:

  • group.dta


结构如右: 数据结构.PNG

问题是:如何将各个id按
a34b345cd2m07ludawiodep67erhuanf
中的最大值分类(group):比如id为1时,huanf值最大,那么group(字符型)将取值为huanf的标签"huangzaow"
id为40时,cd2值最大,那么group(字符型)将取值为cd2的标签"CP7899"
thanks
二维码

扫码加我 拉你入群

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

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

全部回复
2011-7-8 10:59:39
*抛砖引玉:一个迂回的方法。
drop group
loca vlist "a34 b345 cd2 m07 ludaw iode p67er huanf"
foreach i of loc vlist{
loca  a`i' : var label `i'
}
renpfix "" "max"
ren maxid id
reshape long  max@ ,i(id) j(group) s
bys id (max):keep  if _n==_N
foreach i of loca vlist{
replace group="`a`i''" if group=="`i'"
}
/*

这种方法仅仅为了证实reshape的可行性.
希望大家想一个简洁的方法!
二维码

扫码加我 拉你入群

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

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

2011-7-17 17:30:14
先用egen生成一个变量,存放每行的最大值,比如叫rowmax。然后
foreach i of loc vlist{
        replace group = "`i'" if `i'==rowmax
}
二维码

扫码加我 拉你入群

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

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

2011-7-19 14:30:27
herbertzhao 发表于 2011-7-17 17:30 先用egen生成一个变量,存放每行的最大值,比如叫rowmax。然后
foreach i of loc vlist{
        replace group = "`i'" if `i'==rowmax
}
*这个思路可以采用
g group=""
egen m=rowmax(a34-huanf)
foreach i of var a34-huanf{
replace group = "`i'" if `i'==m
}
二维码

扫码加我 拉你入群

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

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

2011-7-20 15:14:23
jzhyue 发表于 2011-7-7 11:35 有数据如附件
比如id为1时,huanf值最大,那么group(字符型)将取值为huanf的标签"huangzaow"
id为40时,cd2值最大,那么group(字符型)将取值为cd2的标签"CP7899"
*根据楼主的数据与问题
egen m=rowmax(a34-huanf)
foreach v of var a34-huanf{
loc n: var l  `v'
replace group = "`n'" if `v'==m
}
二维码

扫码加我 拉你入群

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

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

2011-10-30 19:35:34
讲的太好了,刚好老师布置了这个作业不会做,学习了
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群