楼主: ziyizhong
1513 6

[数据管理求助] 急问,能否基于现有的时间顺序,顺序地给变量编号 [推广有奖]

  • 2关注
  • 0粉丝

大专生

85%

还不是VIP/贵宾

-

威望
0
论坛币
1263 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
159 点
帖子
11
精华
0
在线时间
119 小时
注册时间
2008-8-27
最后登录
2020-9-2

楼主
ziyizhong 发表于 2013-5-29 00:51:06 |AI写论文
5论坛币
如果有变量date与var1,如下图所示:
date        var1
2013-05-01    a ..
2013-05-06    a ..
2013-05-08    a ..
2013-05-09    b ..
2013-05-11    b ..
2013-05-12    b ..
2013-05-13    a..
2013-05-14    a..

想得到按照当前时间的顺序形成一个标明顺序的变量var2为:date        var1           var2
2013-05-01    a ..        1
2013-05-06    a ..        2
2013-05-08    a ..        3
2013-05-09    b ..        1
2013-05-11    b ..        2
2013-05-12    b ..        3
2013-05-13    a..          1
2013-05-14    a..           2


恳请高手帮忙!

关键词:date VaR ATE 时间

沙发
suhongyu000 发表于 2013-5-29 01:10:22
用的什么软件,把数据放上来,你这样太笼统,没法试
专心读书,好好做人。

藤椅
shevaze 发表于 2013-5-29 19:20:47
a又从1开始了???

板凳
ziyizhong 发表于 2013-5-29 19:28:23
用stata,就是我必须基于时间的顺序,对var1中每一个变量的出现标明顺序,该变量会反复出现,每出现一次都重新排序。

报纸
shevaze 发表于 2013-6-6 20:22:24
ziyizhong 发表于 2013-5-29 19:28
用stata,就是我必须基于时间的顺序,对var1中每一个变量的出现标明顺序,该变量会反复出现,每出现一次都重 ...
楼主你好,我自己弄了11个数据,可以实现,但是怎么每次不用修改就能自动实现,还在思考中
tsset date
gen l = l.temp
gen num = 0
replace l = temp if l == .
gen j = 0
forval i = 1/11{
if temp == l in `i' {
replace j = j + 1
replace num = j in `i'
}
if temp != l in `i'{
replace j = 1
replace num = j in `i'
}
local `i' = `i' + 1
}

地板
h3327156 发表于 2013-6-6 22:04:42
*举例
inp date str1 var1
1 a
2 a
3 a
4 b
5 b
6 b
7 a
8 a
end

*测试,请参考
g k=_n if var1[_n-1]!=var1[_n]
replace k=k[_n-1] if k==.
egen kk=group(k)

bys kk (date):g var2=_n

7
蓝色 发表于 2013-6-7 00:10:14
sort  var1 date
bysort var1: id=_n

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

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