Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stata 用上一行日期前一个月的日期填写缺少的行_Stata - Fatal编程技术网

Stata 用上一行日期前一个月的日期填写缺少的行

Stata 用上一行日期前一个月的日期填写缺少的行,stata,Stata,我有如下数据: 行、公司名称、日期调整 1,“纸制品有限公司”, 2,“纸制品有限公司”, 3,“纸制品有限公司”, 4,“纸制品有限公司”, 5,“纸制品有限公司”, 6,“纸制品有限公司”, 7,“纸制品有限公司”, 8,“纸制品有限公司”, 9,“纸制品有限公司”, 10,“纸制品有限公司”, 11,“纸制品有限公司”, 12,“纸制品有限公司”,1990年3月31日 13,“纸制品有限公司”, 14,“纸制品有限公司”, 15,“纸制品有限公司”, 16,“纸制品有限公司”, 17,“纸

我有如下数据:

行、公司名称、日期调整
1,“纸制品有限公司”,
2,“纸制品有限公司”,
3,“纸制品有限公司”,
4,“纸制品有限公司”,
5,“纸制品有限公司”,
6,“纸制品有限公司”,
7,“纸制品有限公司”,
8,“纸制品有限公司”,
9,“纸制品有限公司”,
10,“纸制品有限公司”,
11,“纸制品有限公司”,
12,“纸制品有限公司”,1990年3月31日
13,“纸制品有限公司”,
14,“纸制品有限公司”,
15,“纸制品有限公司”,
16,“纸制品有限公司”,
17,“纸制品有限公司”,
18,“纸制品有限公司”,
19,“纸制品有限公司”,
20,“纸制品有限公司”,
21,“纸制品有限公司”,
22,“纸制品有限公司”,
23,“纸制品有限公司”,
24,“纸制品有限公司”,1991年3月31日
25,“纸制品有限公司”,
26,“纸制品有限公司”,
27,“纸制品有限公司”

每行代表一家公司和报告某些财务信息的日期。考虑第12行的日期。我需要在date_adj下的第11行填写上一个月和年份(date_adj下的第11行应该是1990-02-28)。我需要对变量date_adj下的每一行执行此操作。所以date_adj下的前十一行应该如下所示

行,日期调整
11989-04-31
21989-05-31

111990-02-28
121990-03-31

我用Stata来做这件事。有什么建议吗?

不清楚“上个月的日期”是什么。例如,据我记忆所及,没有1989年4月31日。这里我只减去30天

/* Fake data */
clear
input id str10 str_date
1 "."    
1 "."  
1 "."    
1 "."    
1 "."    
1 "."    
1 "."    
1 "."    
1 "."    
1 "."
1 "."      
1 "1990-03-31"
1 "."    
1 "."  
1 "."    
1 "."    
1 "."    
1 "."    
1 "."    
1 "."    
1 "."    
1 "."   
1 "."
1 "1991-03-31"
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "1979-10-01"
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "."    
2 "1980-10-01"
end

/* Get a Stata daily date */
gen stata_date = date(str_date,"YMD")
format stata_date %td

/* Sort each company backwards */
bys id: gen order = _n
gsort id -order

/* Fill dates down and resort back */
bys id: replace stata_date = stata_date[_n-1]-30 if missing(stata_date)
sort id stata_date

谢谢我已经澄清了我的问题。你的解决方案有效。唯一的改变是使用31而不是30。对于1990年3月31日的情况,上个月不是1990年3月1日,而是1990年2月28日。