我有变量:
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?
答案 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个观测值的公式中使用它,那么每个观测值可能具有相同值的变量就足够了。