有没有办法获取变量类型?

Is there a way to get the variable type?

我想在 Stata 中提取分类变量,但似乎我做的不对。有线索吗?

* Pull out variables with value labels 

sysuse auto
label dir 

local catvars = r(names)

foreach var of varlist _all{
    if `var' in `catvars'{
        di "`var'"
    }
}

如果分类变量的标准是它有值标签,那么ds是最简单的工具:

. sysuse auto, clear
(1978 automobile data)

. ds, has(vallabel)
foreign

ds returns r(varlist).

中的此类变量列表(这里只有一个)

ds 是官方命令。刚刚使用的特定语法,选项 has(),是我在 community-contributed 命令中添加的,后来折叠回随 Stata 本身分发的内容(这就是“官方”在这里的意思)。

来自 Stata Journal

findname 具有相同的功能,甚至更多。它是我写的,作为 ds 的扩展。在某些情况下。至于这个问题,语法不同,代表我对什么是干净的二次思考,但用户自然可能不同意。

. findname, vallabel
foreign

标题中的一般问题也可以回答。 help macro 是各种 low-level 工具文档的门户,这些工具本质上强调了 dsfindname 为方便起见所做的大部分工作。 findname 现在还使用了一些 Stata 本身不直接匹配的 Mata 功能。 findname 的额外选项之一是 local()findname 的结果直接放入本地宏; ds.

中没有这样的选项