楼主: rucqqpp
4033 6

[其他] 求助:不等距分组后循环语句 [推广有奖]

  • 2关注
  • 0粉丝

已卖:1180份资源

硕士生

29%

还不是VIP/贵宾

-

威望
0
论坛币
4093 个
通用积分
8.3450
学术水平
1 点
热心指数
3 点
信用等级
1 点
经验
2359 点
帖子
100
精华
0
在线时间
123 小时
注册时间
2007-2-12
最后登录
2025-10-20

楼主
rucqqpp 发表于 2011-1-8 16:31:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请大侠们帮帮忙
四列数据:股票代码code,总市值tmv,换手率tn,月份month。

如何在每个月内按照总市值的P20, P50 百分位数分组?我知道单独每个月的命令可以这样做
_pctile tmv, p(20,50)
return list
gen g=(tmv<=r(r1)) if tmv<.
replace tmv=2 if tmv>r(r1) & tmv<=r(r2)
replace tmv=3 if tmv>r(r2) & tmv<.

但是关键是pctile的语句不能与  bys month  这样的分组命令连起来用,请问如何才能在样本期139个月的样本期中循环这个分组的命令呢?

多谢!
二维码

扫码加我 拉你入群

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

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

关键词:循环语句 RETURN month mont list 股票代码 return 换手率 如何

沙发
sungmoo 发表于 2011-1-8 16:58:44
rucqqpp 发表于 2011-1-8 16:31 但是关键是pctile的语句不能与  bys month  这样的分组命令连起来用,请问如何才能在样本期139个月的样本期中循环这个分组的命令呢?
你的month的类型与格式是什么样的?

藤椅
rucqqpp 发表于 2011-1-8 21:42:03
就是
month
199801
199801
199803
......
200812

板凳
sungmoo 发表于 2011-1-9 08:12:51
rucqqpp 发表于 2011-1-8 21:42
就是
month
199801
199801
199803
......
200812
*如果month是数值型

levelsof month, l(m)
foreach i of num `m'{
*****   if month==`i'
}

报纸
rucqqpp 发表于 2011-1-9 10:20:38
多谢版主的帮助!

请问我这样写对吗?
levelsof month, l(m)
foreach i of num `m'{
_pctile tmv, p(20,50)
return list
gen g=(tmv<=r(r1)) if tmv<.
replace tmv=2 if tmv>r(r1) & tmv<=r(r2)
replace tmv=3 if tmv>r(r2) & tmv<. if month=`i'
}

但是返回的结果说invalid syntax:

. foreach i of num `m'{
  2. _pctile tmv, p(20,50)
  3. return list
  4. gen g=(tmv<=r(r1)) if tmv<.
  5. replace tmv=2 if tmv>r(r1) & tmv<=r(r2)
  6. replace tmv=3 if tmv>r(r2) & tmv<. if month==`i'
  7. }

scalars:
                 r(r1) =  956154.375
                 r(r2) =  2015615.625
(55565 real changes made)
invalid syntax
r(198);

end of do-file


请问是不是我哪里弄错了?好像进行到第一个月就中断。。。。。。

地板
rucqqpp 发表于 2011-1-11 00:12:33
已经找到解决方法
sort month
gen group = 1
forval i = 10(10)90 {
by month: egen p`i' = pctile(lagtmv), p(`i')
replace group = (`i'/10 + 1) if lagtmv > p`i'
}

gen g=1 if group<=2
replace g=2 if group>3 & group<=5
replace g=3 if group>5

7
陶圆 发表于 2012-5-9 19:35:36
赞一个~

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

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