【问题标题】:extract value from variable stata从变量stata中提取值
【发布时间】:2016-05-19 18:08:53
【问题描述】:

我有变量:

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?

【问题讨论】:

    标签: stata


    【解决方案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 的回归中使用宏(在其他语言中通常称为参数),您需要将其名称嵌入到 `'

    【讨论】:

    • 但这会创建一个 100x1 的重复第一个值的向量。我只需要一个值
    • 你需要指定你想用那个变量做什么。如果需要,您可以使用 mata 将其存储到向量中,或者可能存储在宏中
    • 我需要它来运行 ARMA 模型:arima RV in 1/X1, ar(1/2) ma(1/2)
    【解决方案2】:

    我不同意已经发布的其他两个有用的答案,但是当我阅读 “我怎样才能简单地生成一个单值变量:1x1?”时,我不禁认为你是寻找标量或宏。

    如果这是真的,他们可能会更好

    sum X in 1
    di r(mean)
    

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

    sca MyVar = r(mean)
    

    help summarize,您将看到sum 存储了平均值、最小值和最大值以及许多其他有用的度量。

    要查看自己,请在调用 sum 后运行 return list 以查看返回的内容。

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

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

    【讨论】:

      【解决方案3】:

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

      generate X1 = X[1]
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多