数据如下
|
A
|
B
|
1
|
id
|
date
|
2
| 2 |
2005/10/12
|
3
| 1 |
2005/10/14
|
4
|
3
|
2005/10/14
|
5
| 1 |
2005/10/21
|
6
| 2 |
2005/10/21
|
7
|
3
|
2005/10/21
|
8
| 2 |
2005/10/25
|
9
| 1 |
2005/10/28
|
10
|
3
|
2005/10/28
|
11
| 1 |
2005/11/4
|
12
| 2 |
2005/11/4
|
13
|
3
|
2005/11/4
|
14
| 1 |
2005/11/11
|
15
| 2 |
2005/11/11
|
16
|
3
|
2005/11/11
|
17
| 1 |
2005/11/18
|
18
| 2 |
2005/11/18
|
19
|
3
|
2005/11/18
|
20
| 1 |
2005/11/25
|
21
| 2 |
2005/11/25
|
22
|
3
|
2005/11/25
|
23
| 1 |
2005/12/2
|
24
| 2 |
2005/12/2
|
25
|
3
|
2005/12/2
|
26
| 3 |
2005/12/7
|
27
|
1
|
2005/12/9
|
想通过处理变成这样
|
A
|
B
|
C
|
1
|
id
|
date
|
week
|
2
|
2
|
2005/10/12
|
1
|
3
|
1
|
2005/10/14
|
1
|
4
|
3
|
2005/10/14
|
1
|
5
|
1
|
2005/10/21
|
2
|
6
|
2
|
2005/10/21
|
2
|
7
|
3
|
2005/10/21
|
2
|
8
|
2
|
2005/10/25
|
3
|
9
|
1
|
2005/10/28
|
3
|
10
|
3
|
2005/10/28
|
3
|
11
|
1
|
2005/11/4
|
4
|
12
|
2
|
2005/11/4
|
4
|
13
|
3
|
2005/11/4
|
4
|
14
|
1
|
2005/11/11
|
5
|
15
|
2
|
2005/11/11
|
5
|
16
|
3
|
2005/11/11
|
5
|
17
|
1
|
2005/11/18
|
6
|
18
|
2
|
2005/11/18
|
6
|
19
|
3
|
2005/11/18
|
6
|
20
|
1
|
2005/11/25
|
7
|
21
|
2
|
2005/11/25
|
7
|
22
|
3
|
2005/11/25
|
7
|
23
|
1
|
2005/12/2
|
8
|
24
|
2
|
2005/12/2
|
8
|
25
|
3
|
2005/12/2
|
8
|
26
|
3
|
2005/12/7
|
9
|
27
|
1
|
2005/12/9
|
9
|
最近在算周动量因子,需要设置以周为单位表示时间的变量week
但是在数据库中下的数据不同股票的每周的结尾时间会出现不同,如表一最上面三组数据会出现相差3天左右的情况
请问如何编写程序可以把日期差距在四天以内的观测值都生成一个相同的week变量。生成如表二的数据
这是我自己编的。。。有问题跑不出来
var7是我用excel表格吧日期都变成数字的形式产生的新的变量
mat week=[0]
local total=_N
forval i = 1/`total' {
sort var7
preserve
local b= var7[`i']
local a = var7[`i']
if (`b'<`a'+4)==1{
mat week=[week \ `a']
}
if (`b'<`a'+4)==0{
mat week=[week \ `b']
}
restore
}