【问题标题】:How to get observations as a list in Stata?如何在Stata中将观察结果作为列表?
【发布时间】:2014-11-30 15:08:30
【问题描述】:

Stata 为某些命令返回的值提供了 r() 宏(命令后的 return list)。

我需要在list x if y == 1 之后对x 进行类似的访问,但list 只返回r(N),而不是值本身。

是否可以将观察结果作为本地或全局宏在代码中引用?

【问题讨论】:

    标签: return stata


    【解决方案1】:

    尝试levelsof 命令获取不同的值。这是猫的睡衣。

    【讨论】:

    • 谢谢!如果值不是唯一的,任何获取向量的解决方案?
    • 我不知道有一个。
    【解决方案2】:

    一种保存所有观察值(即包括重复)的方法是使用循环:

    clear 
    set more off
    
    *----- exmple data -----
    
    sysuse auto
    keep rep78
    
    list
    
    *----- what you want -----
    
    forvalues i = 1/`=_N' {
        local myvals `myvals' `=rep78[`i']'
    }
    
    display "`myvals'"
    

    但更重要的是,你为什么认为你需要这样的东西?

    【讨论】:

    • 谢谢。为什么我需要这个?做foreach i in $myvals { ... }之类的事情。
    • Stata 的不同之处在于,大多数命令在发出时会影响所有观察结果。来自其他语言的人有时没有意识到这一点,并发现自己不必要地尝试循环观察。这对于语言来说既不自然,也不高效。另一方面,除非您完全确定自己在做什么,否则不建议使用 全局宏(如您的示例中)。它会引发名称空间冲突。尽可能首选本地宏
    • 除了 Roberto 的优点之外,您的预期代码将如何以不同的方式处理重复值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多