问题标签 [stata-macros]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
28193 浏览

loops - 使用本地宏将具有公共前缀的多个变量制表

我有许多名称以前缀开头的变量indoor。之后indoor的不是数字(这会使一切变得更简单)。

我想要每个变量的表格。

我的代码如下:

问题是,indoorforeach命令中解决indoor*而不是indoor问题列表,正如我所希望的那样。由于这个原因,该tab命令后面有太多变量(它只能处理两个),这会导致错误。

简单的解决方法是将第一个命令替换为:

但这是我想避免的,即必须找到这些变量的所有名称,然后将它们粘贴到代码中。似乎有一个更快的解决方法,但我想不出任何方法。

0 投票
4 回答
304 浏览

python - 哪些类型的语言允许以编程方式创建变量名?

这个问题纯粹出于求知欲。

相对经常浏览 Python 部分后,我看到了许多与此类似的问题其中有人要求以编程方式定义全局变量。他们中的一些人意识到 的陷阱exec,而其他人则没有。

但是,我最近一直在 Stata 中进行编程,以下是常见的:

在 Stata 的说法中,N创建了一个具有名称的本地宏,并N计算为 100。在循环的每次迭代中foreach,从x1to的值x100被分配给本地宏x。然后,循环内的行将 的平方分配i给 的扩展x,这是一个与 结尾相同的局部宏i。也就是这个循环x4展开到4^2后,又x88展开到88^2。

在 Python 中,做类似事情的方法是:

然后squares[7]等于 7^2。

这是一个非常简单的例子。stata 宏还有很多其他用途。您可以将它们用作传递要评估的函数的一种方式,例如:

周围的双刻度线r将该宏扩展了两次,首先是r1/r2然后是regress/ corr,结果是运行线性回归,y作为因变量和x作为自变量,然后显示 和 之间的相关yx。更复杂的东西是可能的。

我的问题基本上是,stata 是否属于更大的语言类别,其中变量赋值/评估采用这种“宏赋值/扩展”形式?任何解释为什么会这样设计一种语言,和/或其他语言中类似结构的例子的加分点。

0 投票
3 回答
6338 浏览

undefined - Stata:检查本地宏是否未定义

我正在编写一个 Statado文件,如果用户不提供某些参数,我想提供默认值。为此,我想检查一个宏是否未定义。

我想出了一个hacky方法来做到这一点:

但我想知道是否有一种惯用的方法来做到这一点。

0 投票
2 回答
802 浏览

regression - 带有虚拟变量的 Mlogit 宏

我是Stata和宏的新手。

我试图循环几个变量以从mlogit命令生成估计值,然后将它们保存在数据集中。那部分运作良好。

我遇到的问题是一个分类变量,我需要将其拆分为虚拟变量:

我以为通过设置SES为全局变量,循环会将其视为一组变量,但我错了。代码循环遍历每个变量,$SES因此我最终将每个虚拟变量trauma_main分别回归,这不是我想要的。

有没有办法“告诉”Stata 将虚拟变量视为一个块?此外,我知道我可以这样做i.SES并且使用它确实可以正常工作,但是使用的参考组不是我想要的。我已经用谷歌搜索了如何为类似的东西设置参考组i.var,但我没有找到任何有用的东西,可能是因为我使用了错误的搜索词。

提前感谢您的任何建议。

劣质煤

0 投票
3 回答
6223 浏览

stata - 将值存储在宏变量中

我正在使用该levelsof命令来识别变量的唯一值并将它们粘贴到宏中。然后稍后我想使用宏中的这些值从我将加载的另一个数据集中选择记录。

我想到的是以下几点:

那样有用吗?还有其他更有效的选择吗?我可以在 R 中轻松做到这一点(因为向量比宏更容易使用),但这个项目需要 Stata。


澄清:

如果我有一个具有三个唯一值和的变量a,我想将它们存储在一个宏变量中,以便稍后获取另一个数据集并选择与其中一个值匹配的观察值。bc

通常可以使用该inlist函数手动执行此操作,但我想对其进行软编码,以便我可以使用不同的值集运行程序。而且我无法使该inlist功能与宏一起使用。

0 投票
1 回答
1777 浏览

global-variables - 使用带有本地宏的 do-file

do使用带有本地宏的文件时,我在 Stata 中收到以下错误:

输出

我知道这是一个非常微不足道的问题,但我不确定这个错误来自哪里。

请注意,当我使用全局宏时,我没有收到错误。

0 投票
5 回答
24017 浏览

foreach - 如何用字符串后缀重命名许多变量

在 Stata 中,我有一组变量都以pkg. 在当前状态下,它们的结尾是数字:pkg1pkg2pkg3pkg4

我需要将所有这些变量的结尾更改为字符串:pkgmz、、、pkggmzpkgsppkgsptc

我有一列这些字符串结尾,我可以将其指定为本地列表。

例如:

如何将数字结尾更改为字符串结尾?

我对代码的猜测可以在下面找到,并???指出我被难住的地方:

我想知道使用该命令是否会更好regexr(),但想不出包含它的方法。

任何帮助表示赞赏。

0 投票
1 回答
1676 浏览

stata - 如何回车一个长的本地列表以及如何只定义一次列表

我的第一个问题很简单,但在任何地方都找不到任何答案,这让我发疯:

  • 在Stata中定义本地列表时,如果列表真的很长,我该如何回车?

通常///在双引号内时不起作用。

例如,这不起作用:

当我删除引号时它确实有效,但我被警告我应该包含引号。

我的第二个问题是一个更严重的问题:

  • 定义了 localreglist后,我怎样才能让 Stata 记住它以供后续多次使用(即,不仅仅是一次)?

例如:

在这里,我定义了 local reglist,然后regression使用这个列表运行 a 并做一些其他的事情。

然后,当我想获取 local 中所有变量的均值时reglist,Stata 不再记得它了,必须重新定义它。这违背了定义列表的全部目的。

如果有人能告诉我如何只定义一次列表并能够随意调用它多次,我将不胜感激。

0 投票
3 回答
6201 浏览

r - R 等效于 Stata 本地或全局宏

我是一名尝试学习 R 的 Stata 用户。

我有几个冗长的文件夹路径,在我的 Stata 代码中,我存储为本地宏。我在这两个文件夹中有多个文件可用于我的分析。

我知道,在 R 中,每次我想引用其中一个文件夹中的文件时,我都可以更改工作目录,但这绝对不是一个好方法。即使我将文件夹路径作为字符串存储在 R 中,我也不知道如何引用它们。例如,在 Stata 中,我会使用“folder1”。

我想知道是否尝试在 R 中逐行重写 Stata 代码不是学习 R 的最佳方法。

有人可以帮忙吗?

0 投票
2 回答
7862 浏览

stata - 如何将平均值存储在本地宏中,然后将其保存在另一个文件中?

我有一个 Stata 文件file1.dta,其中一个变量是income. 我需要计算average_income,将其分配给本地宏,然后存储在不同的 Stata 文件中,New.dta.

我在do文件中尝试了以下内容:

但是,它不起作用。