楼主: xingxf
5620 17

[编程问题求助] 生成过去特定一段时间某ID重复出现的次数 [推广有奖]

11
xingxf 发表于 2013-1-24 06:55:01
dxystata 发表于 2013-1-24 06:20
gen var1=.
local N = _N
forvalues i = 1/`N' {
真的非常感谢!
我知道要用forvalues,但是怎么也想不出具体写法,看了您的程序豁然开朗。您这个程序写的真是太好了,简洁、明了,真是赞啊。

12
xingxf 发表于 2013-1-24 08:43:42
dxystata 发表于 2013-1-24 06:20
gen var1=.
local N = _N
forvalues i = 1/`N' {
太感谢了!
我知道要用forvalues,但是具体程序想了很长时间没想出来,试验过程中总是出错,看来还是语法掌握得不好。您这个程序真是直接、简洁、精妙,我试过了没问题。不过还想请教您一下,如果我在一开始sort Date,那这句count if ID==ID[`i'] & (Date[`i']-Date)/365.25<=5 & (Date[`i']-Date)/365.25>0 & ID~="."里面的 “& (Date[`i']-Date)/365.25>0”部分是不是就可以去掉了?另外,我平时不喜欢加qui,因为如果程序运行时间比较长的话,我总觉得静默执行就像死机的感觉。我想问如果不加qui的话对执行速度有没有影响?
总之太感谢了!

13
dxystata 发表于 2013-1-24 08:54:40
如果我在一开始sort Date,那这句count if ID==ID[`i'] & (Date[`i']-Date)/365.25<=5 & (Date[`i']-Date)/365.25>0 & ID~="."里面的 “& (Date[`i']-Date)/365.25>0”部分是不是就可以去掉了?
不可以。
你可以不用qui,速度有所降低。

一般不需要中间过程时,可以加qui。

14
xingxf 发表于 2013-1-24 09:05:49
dxystata 发表于 2013-1-24 08:54
如果我在一开始sort Date,那这句count if ID==ID[`i'] & (Date[`i']-Date)/365.250”部分是不是就可以去掉 ...
这个我没太理解,如果一开始就sort了的话,程序不是从最上面的数据开始数起的么?那么Date与Date的差值应该一直大于0啊?

那么换句话说如果还保留这句的话,假如一开始Date是乱序排列的话,有必要一开始进行sort么?

谢谢!

15
dxystata 发表于 2013-1-24 09:11:05
假如一开始Date是乱序排列的话,有必要一开始进行sort么?
不需要
Date[`i']-Date
当前观测的Date值和所有的Date的值算差值

16
xingxf 发表于 2013-1-24 09:18:47
dxystata 发表于 2013-1-24 09:11
假如一开始Date是乱序排列的话,有必要一开始进行sort么?
不需要
Date[`i']-Date
这下彻底明白了,哈哈。
谢谢!

17
Sxq8711 发表于 2013-12-28 10:19:46
谢谢  下来看看好不好用

18
cris1988 发表于 2014-1-25 08:12:33
如果按年限折旧,怎么处理呢?
例如,5年前出现的一次只算做1/5次。。

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

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