问题标签 [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.
stata - Adding time in a file name
Consider the code snippet below:
This creates output as follows:
However, I want to create a file name which also has time, not just date. If the time is 4PM 25 min 01 sec, then I wish to have the following:
How can I add this element?
I tried putting c(current_time)
inside the date()
function but that did not work.
Also, I tried to assign a local macro savedir
using the date_string
. However, it seems Stata can't recognise it when it is followed by \
:
What should I do to save the local macro savedir
?
list - Stata 宏列表 uniq 扩展函数(从宏 var 列表中删除重复项)
此问题已被编辑以添加示例数据并清理(希望)每个反馈的一些不必要的步骤。
我从宽格式的纵向数据开始。我需要对多个不同的数据块进行子集化、重塑和执行汇总步骤。我想使用 varlists 创建宏变量,以便以宽格式和长格式进行整形和其他重复步骤。被重塑的变量遵循一致的命名模式(prefix)_(name)_#
. 还有一些遵循相同模式的变量不需要重新整形,还有一些变量是时不变的并遵循其他命名约定。要生成样本数据:
我想创建两个宏变量 1)wide_varlist
用于变量以数字结尾的宽格式数据和 2)uniquestubs
用于宏列表仅包含存根的长格式数据。我无法使用宏列表扩展函数“uniq”在此处生成#2。到目前为止,这是我的代码。我的完整变量列表实际上要长得多。
使用宽格式 varlist 创建宏的步骤:
开始使用长格式 varlist 创建宏的步骤:
上面的一切都按我的意图工作,直到global uniquestubs : list uniq stubs
,它根本不创建宏uniquestubs
。
我的情况似乎与this question类似,但相同的解决方案对我不起作用。
有什么想法吗?感谢帮助。
error-handling - 当未定义全局宏而不是缺少字符串时,是否可以让 Stata 默认抛出错误?
Stata 有时不方便的一个特性是调用未定义的宏会返回缺失值.
[编辑:Stata 实际上返回缺失字符串""
,而不是数字缺失值],而不是抛出错误。一段代码,其正确执行需要定义宏,如果宏名称拼写错误,可能会运行并给出不正确的结果。
例如:定义
global $options = , vce(robust)
了 ,当之后写reg y x $opt
而不是reg y x $options
程序运行时,可能很难意识到vce()
没有考虑该选项。
在这种情况下,是否有任何方法可以强制 Stata 发出错误,或者是否有一些有用的技巧/最佳实践可用于降低发生此类错误的风险?
matrix - 创建可扩展的 varlist
我试图将两个数据文件转换为 Stata 中的矩阵。
在第一个数据文件中只有10
列,所以我使用了:
但是,第二个数据文件包含多个100
列。
我是否必须手动包含mkmat
所有变量名,或者有更好的方法来做到这一点?
r - How do I create a "macro" for regressors in R?
For long and repeating models I want to create a "macro" (so called in Stata and there accomplished with global var1 var2 ...
) which contains the regressors of the model formula.
For example from
I want something like:
I could find is this approach. But my application on the regressors won't work:
as it throws me:
Even the accepted answer of same question:
strikes and shows me:
And of course I tried as.matrix(regressors)
:)
So, what else can I do?
string - 查找两个变量名标量的并集
我有一个Stata 程序,它输出以空格分隔的变量名的本地标量。
我必须在两个样本(相同dta
)上运行该程序两次并将联合(交集 - 出现在两个标量中的变量名称)存储为新的空格分隔的本地标量(用于输入到另一个程序)。
我不知道如何拆分(每个空格)和/或测试每个变量名的出现。
stata - foreach 命令宏中的多个本地
我有一个包含多个子组(变量economist
)和日期(变量temps99
)的数据集。
我想运行一个tabsplit
不接受bysort
或不带by
前缀的命令。所以我创建了一个宏来将我的tabsplit
命令应用于我的数据中的每个子组。
例如:
对于每个子组,Stata 运行tabsplit
命令,我使用变量nbcateco
来存储计数结果。
我对日期做了同样的事情,所以我可以随着时间的r(r)
推移而演变:
现在我想economist
按日期对每个子组执行此操作temps99
。我尝试了多种组合,但我对宏不太擅长(还没有?)。
我想要的是能够r(r)
随着时间的推移为我的每个子组拥有我的。
stata - Stata输入命令不允许本地宏
input
我在Stata的命令中发现了这种奇怪的行为。
当您将本地宏作为一个变量或多个变量的参数传递时,该input
命令会给出以下错误:
'`' 不能读取为数字
以下是两个给出相同错误的示例:
有没有办法将宏传递给input
命令?
graph - 对数图的自动标记
我想自动化 Stata 13 中一系列绘图的图形轴值。特别是,我想通过提供轴选项宏来显示轴标签,如10^-1
、0
、等。10^1
10^2
以下博客文章中的解决方案提供了一个很好的起点:
我还可以使用“10{sup:`x'}”生成更好的标签。
但是,我找不到以下附加元素的解决方案:
轴标签的范围将从
/li>10^-10
到10^10
。此外,我的基线是ln
,所以日志值是2.3
、4.6
等。特别是,下面的行仅将整数作为输入:我想通过图形强制轴值的范围(例如,特定轴从
10^-2
到10^5
)。我知道range()
只扩展轴,但不允许修剪它们。
关于上述任何一个或两个的任何想法?
这是 R 或 Python 中非常简单的输出,即使是标准的,没有很多额外的参数,但不幸的是在 Stata 中不是这样。
global - 如何在Stata的全局宏中嵌套全局宏?
我想在Stata的全局宏中放置一个全局宏。
比如 ,$hello$oneworld
就是宏$one
里面的全局宏$helloworld
。
如何在全局宏中获取全局宏?