是"touse"和"varlist"为本地人保留的名字吗?

Быв*_*сор 2 stata

什么tousevarlist意味着什么?这些本地人是自动生成的吗?

program sample, sortpreserve rclass 

syntax varname(numeric) [fweight] [if] [in] ///

if "`summarize'" != "" local summ "summ" 
if "`welfare'" != ""    local w "w" 
local inc "`varlist'"

if "`weight'" == "" gen byte `wi' = 1
else gen `wi' `exp'

marksample touse
if "`bygroup'" != "" markout `touse' `bygroup'

qui count if `touse'
if r(N) == 0 error 2000
Run Code Online (Sandbox Code Playgroud)

Maa*_*uis 6

本地varlist是由syntax命令创建的,包含单个变量的名称(如您varname未指定的那样varlist).您可以在这里阅读更多相关信息:http://www.stata.com/help.cgi?syntax

临时变量touse由命令创建marksample touse.当一个变量为1时varlist,任何权重变量都没有丢失ifin条件满足,否则为0.稍后修改该变量markout时,bygroup如果缺少变量,则使用值0 .本质上它是一个临时变量,当你想要使用该观察值时包含值1(true),当你想忽略该观察时,它包含0(false).您可以在此处阅读更多相关信息:http://www.stata.com/help.cgi ?marksample


Nic*_*Cox 5

两者都不是保留字,但在两种情况下都有常规用法.

tousemarksampleStataCorp程序员使用它作为家居风格时,使用名称与start 一起开始作为惯例,许多用户程序员也效仿.(名称一起运行"使用".)

什么marksample touse呢,通常但不一定是后syntax声明,是创建一个字节指示变量为1在观测由命令被使用并且在0观测不被使用.

但是,这是一个非常好的惯例.是否采用它在一定程度上取决于您是否希望其他Stata程序员理解您的Stata程序.没有什么能阻止您使用其他名称,稍后您需要在程序中使用该名称.

使用名称varlist分为两部分.您的示例程序显示第一个,但不显示第二个.

  • 如果一个syntax语句指定varnamevarlist指示可以指定变量(通常是多少和哪种类型),那么一旦执行该变量,有关变量的名称将保存在本地宏中varlist,可以将其视为由...创建syntax.

  • 你总是可以将宏名称varlist用于你喜欢的任何目的,尽管除了变量名列表之外的任何东西都会被认为是糟糕的风格.所以,你总能去(例如)

    local varlist "mpg weight" 
    
    Run Code Online (Sandbox Code Playgroud)

请注意,如果syntax之前创建了这样一个varlist宏,那么任何这样的定义都会覆盖它,如果这不是你想要的,那就是一个奇怪的错误来源.(这同样适用于本地宏ifin.)