2

如果我在 Stata 中使用 制作一个双向汇总统计表table,我可以添加另一列与其他两列不同的列吗?

假设我有三个变量 ( a, b, c)。我生成五分位数a,然后在每个五分位数 - 五分位数交叉点b生成一个双向均值表。c我想生成第六列,它是 的每个五分位数c的顶部和底部五分位数之间的平均值之差。ba

我可以c为每个五分之一-五分之一交叉点生成平均值表,但我无法计算出差异列。

* generate data
clear
set obs 2000
generate a = rnormal()
generate b = rnormal()
generate c = rnormal()

* generate quantiles for for a and b
xtile a_q = a, nquantiles(5)
xtile b_q = b, nquantiles(5)

* calculate the means of each quintile intersection
table a_q b_q, c(mean c)

* if I want the top and bottom b quantiles
table a_q b_q if b_q == 1 | b_q == 5, c(mean c)

更新:这是我想做的一个例子。在此处输入图像描述

4

1 回答 1

2

使用该collapse命令,您可以创建自定义表格,如您所想的那样。

preserve
collapse (mean) c, by(a_q b_q)
keep if inlist(b_q, 1, 5)
reshape wide c, i(a_q) j(b_q)
gen c5_c1 = c5 - c1
set obs `=_N + 1'
replace c1 = c1[`=_N - 1'] - c1[1] if mi(a_q)
replace c5 = c5[`=_N - 1'] - c5[1] if mi(a_q)
replace c5_c1 = c5_c1[`=_N - 1'] - c5_c1[1] if mi(a_q)
list, sep(0) noobs
restore

然后你应该在你的输出中得到这样的东西:

  +-----------------------------------------+
  | a_q          c1          c5       c5_c1 |
  |-----------------------------------------|
  |   1    .2092651    .1837719   -.0254932 |
  |   2    .0256483   -.0118134   -.0374617 |
  |   3     .022957    .0586441    .0356871 |
  |   4    .0431809    .0876745    .0444935 |
  |   5   -.0859874    .0199202    .1059076 |
  |   .   -.2952525   -.1638517    .1314008 |
  +-----------------------------------------+

如果您对 Stata 不是很熟悉,以下帮助页面可能有助于理解代码

help _variables
help subscripting
于 2011-09-21T06:48:34.707 回答