我试图在Stata中使用tabulate
命令来创建时间序列的频率。当我在运行每个日期之后尝试合并tabulate
的输出时,会出现问题。当所观察变量的值不存在观察值时,tabulate
将不包括0作为条目。例如,如果我想在一个班上计算10,11和12岁儿童的三年时间,Stata可能会输出(8),如果只有其中一个团队有代表,因此我们不知道哪一个团队8学生属于:可能是(0,8,0)或(0,0,8)。如何获得Stata在列表中报告零数
如果时间序列较短,“结果”窗口显示哪些类别未被表示,则这不是问题。我的数据有更长的时间序列。有谁知道强制Stata在这些表中包含零的解决方案/方法吗?我的代码的相关部分如下:
# delimit;
set more off;
clear;
matrix drop _all;
set mem 1200m;
cd ;
global InputFile "/Users/.../1973-2010.dta";
global OutputFile "/Users/.../results.txt";
use $InputFile;
compress;
log using "/Users/.../log.txt", append;
gen yr_mn = ym(year(datadate), month(datadate));
la var yr_mn "Year-Month Date"
xtset, clear;
xtset id datadate, monthly;
/*Converting the Ratings Scale to Numeric*/;
gen LT_num = .;
replace LT_num = 1 if splticrm=="AAA";
replace LT_num = 2 if (splticrm=="AA"||splticrm=="AA+"||splticrm=="AA-");
replace LT_num = 3 if (splticrm=="A"||splticrm=="A+"||splticrm=="A-");
replace LT_num = 4 if (splticrm=="BBB"||splticrm=="BBB+"||splticrm=="BBB-");
replace LT_num = 5 if (splticrm=="BB"||splticrm=="BB+"||splticrm=="BB-");
replace LT_num = 6 if (splticrm=="B"||splticrm=="B+"||splticrm=="B-");
replace LT_num = 7 if (splticrm=="CCC"||splticrm=="CCC+"||splticrm=="CCC-");
replace LT_num = 8 if (splticrm=="CC");
replace LT_num = 9 if (splticrm=="SD");
replace LT_num = 10 if (splticrm=="D");
summarize(yr_mn);
local start = r(min);
local finish = r(max);
forv x = `start'/`finish' {;
qui tab LT_num if yr_mn == `x', matcell(freq_`x');
};
log close;
感谢您的快速响应。 – 2011-02-16 18:23:47