*-
https://bbs.pinggu.org/thread-1082398-1-1.html
*-Given by Arlion,
http://toran.cn/arlion
*-2011-04-21
clear
input str10 company str30 date int value str30 mean30
a 2001.02.03 1 "=1"
a 2001.03.19 2 "=2"
a 2001.03.22 3 "=(2+3)/2"
a 2001.04.02 4 "=(2+3+4)/3"
a 2001.05.01 5 "=(4+5)/2"
b 2001.02.23 6 "=6"
b 2001.03.05 7 "=(6+7)/2"
b 2001.06.01 8 "=8"
b 2001.06.30 9 "=(8+9)/2"
c 2001.03.07 10 "=10"
c 2001.04.12 11 "=11"
end
compress
gen tt = subinstr(date, ".", "-", .)
gen t1 = date(tt, "YMD")
gen t2 = t1
format t2 %tdCY-m-D
egen id = group(company)
tsset id t2
tsfill
tssmooth ma mean=value, window(30 1 0)
br
drop if t1==.
br
*-结果如下:
list company date value mean30 id t2 mean, sep(0) clean
company date value mean30 id t2 mean
1. a 2001.02.03 1 =1 1 2001-Feb-03 1
2. a 2001.03.19 2 =2 1 2001-Mar-19 2
3. a 2001.03.22 3 =(2+3)/2 1 2001-Mar-22 2.5
4. a 2001.04.02 4 =(2+3+4)/3 1 2001-Apr-02 3
5. a 2001.05.01 5 =(4+5)/2 1 2001-May-01 4.5
6. b 2001.02.23 6 =6 2 2001-Feb-23 6
7. b 2001.03.05 7 =(6+7)/2 2 2001-Mar-05 6.5
8. b 2001.06.01 8 =8 2 2001-Jun-01 8
9. b 2001.06.30 9 =(8+9)/2 2 2001-Jun-30 8.5
10. c 2001.03.07 10 =10 3 2001-Mar-07 10
11. c 2001.04.12 11 =11 3 2001-Apr-12 11