问题标签 [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.
loops - 使用本地宏将具有公共前缀的多个变量制表
我有许多名称以前缀开头的变量indoor
。之后indoor
的不是数字(这会使一切变得更简单)。
我想要每个变量的表格。
我的代码如下:
问题是,indoor
在foreach
命令中解决indoor*
而不是indoor
问题列表,正如我所希望的那样。由于这个原因,该tab
命令后面有太多变量(它只能处理两个),这会导致错误。
简单的解决方法是将第一个命令替换为:
但这是我想避免的,即必须找到这些变量的所有名称,然后将它们粘贴到代码中。似乎有一个更快的解决方法,但我想不出任何方法。
python - 哪些类型的语言允许以编程方式创建变量名?
这个问题纯粹出于求知欲。
相对经常浏览 Python 部分后,我看到了许多与此类似的问题,其中有人要求以编程方式定义全局变量。他们中的一些人意识到 的陷阱exec
,而其他人则没有。
但是,我最近一直在 Stata 中进行编程,以下是常见的:
在 Stata 的说法中,N
创建了一个具有名称的本地宏,并N
计算为 100。在循环的每次迭代中foreach
,从x1
to的值x100
被分配给本地宏x
。然后,循环内的行将 的平方分配i
给 的扩展x
,这是一个与 结尾相同的局部宏i
。也就是这个循环x4
展开到4^2后,又x88
展开到88^2。
在 Python 中,做类似事情的方法是:
然后squares[7]
等于 7^2。
这是一个非常简单的例子。stata 宏还有很多其他用途。您可以将它们用作传递要评估的函数的一种方式,例如:
周围的双刻度线r
将该宏扩展了两次,首先是r1
/r2
然后是regress
/ corr
,结果是运行线性回归,y
作为因变量和x
作为自变量,然后显示 和 之间的相关y
性x
。更复杂的东西是可能的。
我的问题基本上是,stata 是否属于更大的语言类别,其中变量赋值/评估采用这种“宏赋值/扩展”形式?任何解释为什么会这样设计一种语言,和/或其他语言中类似结构的例子的加分点。
undefined - Stata:检查本地宏是否未定义
我正在编写一个 Statado
文件,如果用户不提供某些参数,我想提供默认值。为此,我想检查一个宏是否未定义。
我想出了一个hacky方法来做到这一点:
但我想知道是否有一种惯用的方法来做到这一点。
regression - 带有虚拟变量的 Mlogit 宏
我是Stata和宏的新手。
我试图循环几个变量以从mlogit
命令生成估计值,然后将它们保存在数据集中。那部分运作良好。
我遇到的问题是一个分类变量,我需要将其拆分为虚拟变量:
我以为通过设置SES
为全局变量,循环会将其视为一组变量,但我错了。代码循环遍历每个变量,$SES
因此我最终将每个虚拟变量trauma_main
分别回归,这不是我想要的。
有没有办法“告诉”Stata 将虚拟变量视为一个块?此外,我知道我可以这样做i.SES
并且使用它确实可以正常工作,但是使用的参考组不是我想要的。我已经用谷歌搜索了如何为类似的东西设置参考组i.var
,但我没有找到任何有用的东西,可能是因为我使用了错误的搜索词。
提前感谢您的任何建议。
劣质煤
stata - 将值存储在宏变量中
我正在使用该levelsof
命令来识别变量的唯一值并将它们粘贴到宏中。然后稍后我想使用宏中的这些值从我将加载的另一个数据集中选择记录。
我想到的是以下几点:
那样有用吗?还有其他更有效的选择吗?我可以在 R 中轻松做到这一点(因为向量比宏更容易使用),但这个项目需要 Stata。
澄清:
如果我有一个具有三个唯一值和的变量a
,我想将它们存储在一个宏变量中,以便稍后获取另一个数据集并选择与其中一个值匹配的观察值。b
c
通常可以使用该inlist
函数手动执行此操作,但我想对其进行软编码,以便我可以使用不同的值集运行程序。而且我无法使该inlist
功能与宏一起使用。
global-variables - 使用带有本地宏的 do-file
do
使用带有本地宏的文件时,我在 Stata 中收到以下错误:
输出
我知道这是一个非常微不足道的问题,但我不确定这个错误来自哪里。
请注意,当我使用全局宏时,我没有收到错误。
foreach - 如何用字符串后缀重命名许多变量
在 Stata 中,我有一组变量都以pkg
. 在当前状态下,它们的结尾是数字:pkg1
、pkg2
、pkg3
等pkg4
。
我需要将所有这些变量的结尾更改为字符串:pkgmz
、、、pkggmz
等pkgsp
。pkgsptc
我有一列这些字符串结尾,我可以将其指定为本地列表。
例如:
如何将数字结尾更改为字符串结尾?
我对代码的猜测可以在下面找到,并???
指出我被难住的地方:
我想知道使用该命令是否会更好regexr()
,但想不出包含它的方法。
任何帮助表示赞赏。
stata - 如何回车一个长的本地列表以及如何只定义一次列表
我的第一个问题很简单,但在任何地方都找不到任何答案,这让我发疯:
- 在Stata中定义本地列表时,如果列表真的很长,我该如何回车?
通常///
在双引号内时不起作用。
例如,这不起作用:
当我删除引号时它确实有效,但我被警告我应该包含引号。
我的第二个问题是一个更严重的问题:
- 定义了 local
reglist
后,我怎样才能让 Stata 记住它以供后续多次使用(即,不仅仅是一次)?
例如:
在这里,我定义了 local reglist
,然后regression
使用这个列表运行 a 并做一些其他的事情。
然后,当我想获取 local 中所有变量的均值时reglist
,Stata 不再记得它了,必须重新定义它。这违背了定义列表的全部目的。
如果有人能告诉我如何只定义一次列表并能够随意调用它多次,我将不胜感激。
r - R 等效于 Stata 本地或全局宏
我是一名尝试学习 R 的 Stata 用户。
我有几个冗长的文件夹路径,在我的 Stata 代码中,我存储为本地宏。我在这两个文件夹中有多个文件可用于我的分析。
我知道,在 R 中,每次我想引用其中一个文件夹中的文件时,我都可以更改工作目录,但这绝对不是一个好方法。即使我将文件夹路径作为字符串存储在 R 中,我也不知道如何引用它们。例如,在 Stata 中,我会使用“folder1”。
我想知道是否尝试在 R 中逐行重写 Stata 代码不是学习 R 的最佳方法。
有人可以帮忙吗?
stata - 如何将平均值存储在本地宏中,然后将其保存在另一个文件中?
我有一个 Stata 文件file1.dta
,其中一个变量是income
. 我需要计算average_income
,将其分配给本地宏,然后存储在不同的 Stata 文件中,New.dta
.
我在do
文件中尝试了以下内容:
但是,它不起作用。