全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
10930 6
2015-11-12
悬赏 5 个论坛币 未解决
StockIDDateStandardCHR
0000012008-12-31    116.76
0000012008-12-31    216.76
0000012009-12-31    116.76
0000012009-12-31    216.76
0000012010-12-31    1
0000012010-12-31    215.03


当Standard 数值为1且对应的CHR为空时,用同一StockID 和Date 的Standard值为2所对应的CHR值将其替换

(也就是最后一行的CHR值填充到倒数第二行的空白处)


跪谢大神!!!!!!!!


二维码

扫码加我 拉你入群

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

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

全部回复
2015-11-14 13:49:30
我建议你可以用循环loop, 用nested loop。 如forvalues, 每一个StockID, date, 和standard 来看,如果是missing, 就用下一个standard CHR来替换。 我不知道你全部的数据样式,不好写命令。大概是:
sum StockID
forvalues i=1/`r(max)' {
  forvalues j=XX {
     forvalues m=1/2 {
        replace ...
  }
}
}
二维码

扫码加我 拉你入群

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

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

2015-11-16 20:23:07
谢谢您
二维码

扫码加我 拉你入群

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

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

2015-11-16 20:23:46
raymondxiang 发表于 2015-11-14 13:49
我建议你可以用循环loop, 用nested loop。 如forvalues, 每一个StockID, date, 和standard 来看,如果是mis ...
谢谢您
二维码

扫码加我 拉你入群

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

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

2015-12-3 23:03:09
最近发现还有一种更方便的解决方法,来更好地解决这一问题。就是先将这一数据定义为一个面板数据,然后,再用一个F运算就可以轻松搞定了。
因为,这里讲到Stockid 和 data必须相同,然后standard不同。所以,要先用Stockid 和 data进行分组,也就是用date来拆分stockid,这样就能定义面板数据了。具体只需要下面三条命令就够了。分别是分组,定义面板数据,和对missing值的替换。
egen id=group(stockid date)
xtset id standard
replace chr=F.chr if chr==.
二维码

扫码加我 拉你入群

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

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

2016-1-9 16:38:20
raymondxiang 发表于 2015-12-3 23:03
最近发现还有一种更方便的解决方法,来更好地解决这一问题。就是先将这一数据定义为一个面板数据,然后,再 ...
我想请教你一个问题,我是想不同年份对x进行加和,所以先是egen y=sum(x) if year==2007,但还是想用y这个变量来表示,此时再replace y=sum(x) if year==2008,这里就会出现问题,因为此时replace 代表的是gen,所以生成的数据是累计加和的,而不是所有数据的整和。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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