从变量stata中提取值

时间:2016-05-19 18:08:54

标签: stata

我有变量:

set obs 1000
g X= rnormal(0,1)
egen t=fill(1 2)

我需要生成一个新变量,它包含一个值:X的第一个值。我试过了:

 separate X, by(_n <= 1)

gen X1 = X if t<=1

但是这些选项给我一个带有第一个值的向量100x1 - 我需要的值和99个空单元格。如何只生成一个值变量:1x1?

3 个答案:

答案 0 :(得分:1)

你必须写两行代码我的朋友

gen X1 = X if t<=1
replace X1=X1[_n-1] if missing(X1[_n])

local my_parameter=X1[1]

然后您很高兴在 arma 回归中使用您的`my_parameter'宏

. di `my_parameter'
-.44087866

请记住,要在stata的回归中使用宏(通常在其他语言中称为参数),您需要将其名称嵌入“

答案 1 :(得分:1)

我不同意已经发布的其他两个有用的答案,但是当我读到&#34;我如何只生成一个值变量:1x1?&#34; ,我无法帮助,但认为你正在寻找一个标量或宏。

如果确实如此,那么

可能会更好
sum X in 1
di r(mean)

从这里开始,存储此值以便稍后使用是微不足道的:

sca MyVar = r(mean)

help summarize开始,您会看到sum存储了许多其他有用指标中的均值,最小值和最大值。

要了解自己,请在致电return list后运行sum以查看返回的内容。

通过使用in 1,您将限制summarize命令仅针对第一次观察运行。当然,summarize返回的许多标量将等于你想要的值。

如果您愿意,也可以在sum前加quietly来抑制输出,或添加meanonly选项以仅计算均值并抑制显示。

答案 2 :(得分:0)

也许这会为你指明一个有用的方向

generate X1 = X[1]

关键是X [1]是第一次观察中X的值。现在说了,你想用这个价值做什么?您的数据集有1000个观察值。你想要一个本地或全球宏吗?标量?如果您打算在应用于所有1000个观测值的公式中使用它,那么每个观测值可能具有相同值的变量就足够了。