问题标签 [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.
variables - 什么时候删除全局宏?
我有一个do
文件,我想从中选择几行代码,然后使用Execute (do)
按钮运行它们。问题是这个do
文件中定义了一堆本地宏。我可以运行它们,但是在 Stata 命令提示符下,无法访问本地宏。因此,我认为我应该只使用全局宏。
我已经查看了几个地方,但无法找出范围宏变量实际具有的内容。我意识到本地宏仅在do
最初创建它们的实例(例如文件)中定义。
但是对于全局宏,它们是否会永久存储,并且每次我打开一个新的 Stata 实例时,我仍然会拥有以前会话中的全局宏吗?
还是每次我退出Stata(或其他)时它们都会被删除?
stata - 为宏分配一系列值
我正在尝试使用for
循环重命名变量列表。
我的代码如下所示:
我想知道是否可以在k
不手动编写宏的情况下为宏分配范围。请注意,两个值之间的增量不是一。
r - R 等效于 Stata 对存根名称的本地宏列表的 for 循环
我是一名正在过渡到 R 的 Stata 用户,我发现我很难放弃一个 Stata 拐杖。这是因为我不知道如何用 R 的“应用”函数来做等效的事情。
在 Stata 中,我经常生成一个存根名称的本地宏列表,然后遍历该列表,调用名称由这些存根名称构建的变量。
举个简单的例子,假设我有以下数据集:
我想生成两个新变量,它们分别在年为 6时、年为 7 时和年为8 时分别取varX
和varY
的值。varX06
varY06
varX07
varY07
varX08
varY08
最终数据集应如下所示:
澄清一下,我知道我可以使用melt
和reshape
命令来做到这一点 - 本质上是将这些数据从宽格式转换为长格式,但我不想诉诸于此。这不是我的问题的意图。
我的问题是关于如何遍历 R 中存根名称的本地宏列表,我只是使用这个简单的示例来说明一个更通用的困境。
在 Stata 中,我可以生成存根名称的本地宏列表:
然后遍历宏列表。如果年份为 6,我可以生成一个新变量varX
或用orvarY
的值(分别)替换新变量值,依此类推。varX06
varY06
最后一部分是我发现在 R 中最难复制的部分。当我编写'x'06
时,Stata 获取字符串“varX”,将其与字符串“06”连接起来,然后返回变量 varX06 的值。此外,当我编写时'i'
,Stata 返回字符串“varX”而不是字符串“'i'”。
我如何用 R 做这些事情?
我搜索了 Muenchen 的“Stata 用户的 R”,搜索了网络,并在 StackOverflow 上搜索了以前的帖子,但找不到 R 解决方案。
如果这个问题很简单,我很抱歉。如果之前已经回答过,请引导我到回复。
提前致谢,
塔拉
for-loop - 循环内的局部宏
我正在运行面板回归,我必须尝试变量组合。
我一直在尝试运行以下代码:
然而,Stata 拒绝承认forvalues
循环内有当地人。
如果有人能指出一个有效的替代方案,那将非常有帮助。
我正在使用 Stata 12.0 版。
loops - 本地宏在循环中使用时“消失”
我有一个小代码片段,其中定义了i
要在forvalues
循环中使用的本地宏:
然而,Stata 抱怨道:
请注意,仅当我在循环中使用宏时才会出现此错误,否则不会出现。
indexing - 如何在宏中获取价值索引
我有一个全局宏:
我循环这个宏,我希望能够根据当前索引值生成三个新变量global_macro
:
所以我希望它产生变量new_var_1
,new_var_2
和new_var_3
因为sheep
是 中的第一个值global_macro
,frog
是第二个,dragon
是第三个。index
将首先包含1
,然后2
,最后3
。
我知道扩展宏函数中基本上有相反的功能,称为word
. 这允许人们根据索引访问宏中的值 - 而不是根据值访问索引。
有什么功能可以做我想做的事吗?
types - 如何将存储在本地宏中的值从字符串更改为数字?
我想根据存储在"$S_DATE"
宏中的年份生成一个滞后年份的变量。我将年份存储在一个名为的宏中date
:
我想用以下方法生成新变量:
其中y_passed
是一个包含从 1 到 10 的整数的变量。
但是,我得到:
我知道发生这种情况是因为存储的宏是一个字符串。
如何将存储在本地宏中的值从字符串更改为数字?
stata - 在 varlist 中指定变量之前的变量处停止
我被困在一个棘手的数据管理问题上,我需要在 Stata 中解决这个问题。我使用的是 13.1 版。
我有 40 多个数据集需要使用每个数据集中不同的变量子集来处理。由于专有原因,我不能包含我正在做的数据或具体分析,但会尝试包含示例和代码。
我有一组数据集,A-Z
. 每个人都有一组问题,Q1
通过Q200
。我需要进行分析,其中包括varlist
每个数据集上的条目,不包括最后几个问题(处理背景信息)。我知道此背景信息以某个问题(例如“MALE / FEMALE”)开头,尽管该问题的实际数字因数据集而异。
这是我到目前为止所做的:
那行得通,但问题是我包含的变量实际上是我应该开始排除的开始。我知道我可以将 保存varlist
为宏,然后使用宏中的位置来排除,例如,第七个变量。
但是,我坚持要更进一步 - 使用它作为varlist
在变量中停止的条目MF
。类似的东西ANALYSIS Q1 - (MF - 1)
。
有谁知道这样的事情是否可能?
我在这个网站和谷歌上搜索过这个问题,但没有找到好的解决方案。
抱歉,如果这是我错过的一个简单问题。
subset - 用整数序列替换数据子集
我有一个如下所示的数据集:
我想用与其对应的整数序列填充缺失值id
:
我最初考虑使用forvalues
循环如下:
1
但这(出于显而易见的原因)只是在第一次迭代期间替换了所有缺失值。
然后我考虑通过行索引(如在 R 中)将循环限制为数据的子集,但 Stata(?)似乎不存在此功能:
我怎样才能在 Stata 中完成这个看似简单的任务?
foreach - 按组分析并从变量中提取值以进行打印
我正在按组进行一些处理,按学校进行一些回归。
我想做的是稍微定制我的输出,这样我就可以看到什么输出属于哪个学校。但是,我似乎无法以这种方式处理 theforeach
或 theforvalues
以使其工作。我尝试了各种迭代foreach
并forvalues
取得了一些成功。
我现在一直在尝试做的是调用在线schoolname
显示的值di
,但我没有成功。
您可以在下面找到一些虚拟数据和代码:
注意:此问题也已在Statalist上交叉发布