问题标签 [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 投票
1 回答
1660 浏览

variables - 什么时候删除全局宏?

我有一个do文件,我想从中选择几行代码,然后使用Execute (do)按钮运行它们。问题是这个do文件中定义了一堆本地宏。我可以运行它们,但是在 Stata 命令提示符下,无法访问本地宏。因此,我认为我应该只使用全局宏。

我已经查看了几个地方,但无法找出范围宏变量实际具有的内容。我意识到本地宏仅在do最初创建它们的实例(例如文件)中定义。

但是对于全局宏,它们是否会永久存储,并且每次我打开一个新的 Stata 实例时,我仍然会拥有以前会话中的全局宏吗?

还是每次我退出Stata(或其他)时它们都会被删除?

0 投票
1 回答
165 浏览

stata - 为宏分配一系列值

我正在尝试使用for循环重命名变量列表。

我的代码如下所示:

我想知道是否可以在k不手动编写宏的情况下为宏分配范围。请注意,两个值之间的增量不是一。

0 投票
4 回答
2846 浏览

r - R 等效于 Stata 对存根名称的本地宏列表的 for 循环

我是一名正在过渡到 R 的 Stata 用户,我发现我很难放弃一个 Stata 拐杖。这是因为我不知道如何用 R 的“应用”函数来做等效的事情。

在 Stata 中,我经常生成一个存根名称的本地宏列表,然后遍历该列表,调用名称由这些存根名称构建的变量。

举个简单的例子,假设我有以下数据集:

我想生成两个新变量,它们分别在年为 6时、年为 7 时和年为8 时分别取varXvarY的值。varX06varY06varX07varY07varX08varY08

最终数据集应如下所示:

澄清一下,我知道我可以使用meltreshape命令来做到这一点 - 本质上是将这些数据从宽格式转换为长格式,但我不想诉诸于此。这不是我的问题的意图。

我的问题是关于如何遍历 R 中存根名称的本地宏列表,我只是使用这个简单的示例来说明一个更通用的困境。

在 Stata 中,我可以生成存根名称的本地宏列表:

然后遍历宏列表。如果年份为 6,我可以生成一个新变量varX或用orvarY的值(分别)替换新变量值,依此类推。varX06varY06

最后一部分是我发现在 R 中最难复制的部分。当我编写'x'06时,Stata 获取字符串“varX”,将其与字符串“06”连接起来,然后返回变量 varX06 的值。此外,当我编写时'i',Stata 返回字符串“varX”而不是字符串“'i'”。

我如何用 R 做这些事情?

我搜索了 Muenchen 的“Stata 用户的 R”,搜索了网络,并在 StackOverflow 上搜索了以前的帖子,但找不到 R 解决方案。

如果这个问题很简单,我很抱歉。如果之前已经回答过,请引导我到回复。

提前致谢,
塔拉

0 投票
2 回答
851 浏览

for-loop - 循环内的局部宏

我正在运行面板回归,我必须尝试变量组合。

我一直在尝试运行以下代码:

然而,Stata 拒绝承认forvalues循环内有当地人。

如果有人能指出一个有效的替代方案,那将非常有帮助。

我正在使用 Stata 12.0 版。

0 投票
1 回答
96 浏览

loops - 本地宏在循环中使用时“消失”

我有一个小代码片段,其中定义了i要在forvalues循环中使用的本地宏:

然而,Stata 抱怨道:

请注意,仅当我在循环中使用宏时才会出现此错误,否则不会出现。

0 投票
2 回答
402 浏览

indexing - 如何在宏中获取价值索引

我有一个全局宏:

我循环这个宏,我希望能够根据当前索引值生成三个新变量global_macro

所以我希望它产生变量new_var_1,new_var_2new_var_3因为sheep是 中的第一个值global_macro,frog是第二个,dragon是第三个。index将首先包含1,然后2,最后3

我知道扩展宏函数中基本上有相反的功能,称为word. 这允许人们根据索引访问宏中的值 - 而不是根据值访问索引。

有什么功能可以做我想做的事吗?

0 投票
1 回答
4033 浏览

types - 如何将存储在本地宏中的值从字符串更改为数字?

我想根据存储在"$S_DATE"宏中的年份生成一个滞后年份的变量。我将年份存储在一个名为的宏中date

我想用以下方法生成新变量:

其中y_passed是一个包含从 1 到 10 的整数的变量。

但是,我得到:

我知道发生这种情况是因为存储的宏是一个字符串。

如何将存储在本地宏中的值从字符串更改为数字?

0 投票
1 回答
92 浏览

stata - 在 varlist 中指定变量之前的变量处停止

我被困在一个棘手的数据管理问题上,我需要在 Stata 中解决这个问题。我使用的是 13.1 版。

我有 40 多个数据集需要使用每个数据集中不同的变量子集来处理。由于专有原因,我不能包含我正在做的数据或具体分析,但会尝试包含示例和代码。

我有一组数据集,A-Z. 每个人都有一组问题,Q1通过Q200。我需要进行分析,其中包括varlist每个数据集上的条目,不包括最后几个问题(处理背景信息)。我知道此背景信息以某个问题(例如“MALE / FEMALE”)开头,尽管该问题的实际数字因数据集而异。

这是我到目前为止所做的:

那行得通,但问题是我包含的变量实际上是我应该开始排除的开始。我知道我可以将 保存varlist为宏,然后使用宏中的位置来排除,例如,第七个变量。

但是,我坚持要更进一步 - 使用它作为varlist在变量中停止的条目MF。类似的东西ANALYSIS Q1 - (MF - 1)

有谁知道这样的事情是否可能?

我在这个网站和谷歌上搜索过这个问题,但没有找到好的解决方案。

抱歉,如果这是我错过的一个简单问题。

0 投票
5 回答
345 浏览

subset - 用整数序列替换数据子集

我有一个如下所示的数据集:

我想用与其对应的整数序列填充缺失值id

我最初考虑使用forvalues循环如下:

1但这(出于显而易见的原因)只是在第一次迭代期间替换了所有缺失值。

然后我考虑通过行索引(如在 R 中)将循环限制为数据的子集,但 Stata(?)似乎不存在此功能:

我怎样才能在 Stata 中完成这个看似简单的任务?

0 投票
1 回答
43 浏览

foreach - 按组分析并从变量中提取值以进行打印

我正在按组进行一些处理,按学校进行一些回归。

我想做的是稍微定制我的输出,这样我就可以看到什么输出属于哪个学校。但是,我似乎无法以这种方式处理 theforeach或 theforvalues以使其工作。我尝试了各种迭代foreachforvalues取得了一些成功。

我现在一直在尝试做的是调用在线schoolname显示的值di,但我没有成功。

您可以在下面找到一些虚拟数据和代码:

注意:此问题也已在Statalist上交叉发布