问题标签 [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 回答
118 浏览

count - 在循环中使用计数时出现语法错误

我正在尝试运行一个循环,在其中计算变量下每个文件中的总数_merge,然后计算 的某些结果_merge,例如_merge=1等等。然后,我想通过将 的每个实例除以 下_merge的总数来计算百分比_merge

下面是我的代码:

代码运行良好,直到我尝试添加每个病房文件的总数:

这是语法错误还是更严重的问题?

0 投票
2 回答
58 浏览

stata - 跟踪通过拆分字符串创建了多少新变量

我正在使用该split命令拆分一个变量,该变量具有多个用分号分隔的字符串。我还想跟踪由于拆分原始字符串变量并将其存储在本地宏中而创建了多少新字符串变量。

例如,如果我的初始数据类似于:

我使用split State, p(;)

我希望能够发现它已经创建了3新变量并将该值存储在本地宏中。

有没有办法做到这一点?

0 投票
1 回答
119 浏览

loops - 全局宏和循环冲突

我正在尝试自动化运行一堆按顺序命名的文件的过程,以相同的方式操作它们,然后保存它们。

我认为使用forvalues带有全局宏的循环将是在 Stata 中执行此操作的最佳方法。

我的代码是这样的:

但是,这给了我错误:

程序错误:代码跟在大括号的同一行

似乎 Stata 正在读取全局宏的大括号作为循环的开始。我尝试了不同的循环变体来解决这个问题,但无济于事。由于我clear在循环中使用,我不能使用本地宏,否则它会进入无限循环。

0 投票
2 回答
2102 浏览

if-statement - 使用 if 语句为局部变量赋值

我正在尝试将条件值分配给 Stata 15 中的局部宏变量。

我有一个只能有两个值的局部变量;“o”或“u”。然后我有另一个局部变量,我想获得这两个的另一个字母而不是第一个局部变量。

我的代码如下所示:

我还尝试了该代码的多种变体,其中我在 if 语句中只有一个“=”,并且在条件语句中的字母周围有“”。

我收到一条错误消息,上面写着:

如果不允许

所以我想如果可能的话,我不能这样做。

是否可以在Stata中分配“自动”条件局部变量值?

如果可能的话,我应该怎么做?

0 投票
1 回答
144 浏览

stata - 程序中如何使用语法?

我已经program在 Stata 中使用过该命令很多次了。

今天,我正在尝试自学如何创建一个使用输入的程序。我试过查看帮助文件和我在互联网上找到的这些讲座幻灯片syntax的第 71 页,但我不知道该怎么做。

如果您能向我展示一些彻底涵盖该特定主题的文档,我将不胜感激。或者只是在下面指出我做错了什么。

如您所见,我只想创建一个简短的程序来检查指定文件夹中是否存在文件(capture confirm file),但是如果有错误(),我想显示我自己的对话框window stopbox note,如果是,则退出do有条不紊地归档(exit 601)。

返回错误:

不允许使用因子变量和时间序列运算符
r(101);

我不确定如何使用syntax来获取文件夹路径和文件名。请注意,这些通常是字符串,但我猜是:

将导致,例如,""C:\Users\User\Documents"/"NIDSw5.dta""如果输入是用引号完成的,这就是为什么我认为我应该使用该local(input)方法。

另请注意,我将使用全局变量 ( $DataIN) 而不是将文件夹路径字符串放在那里,并且文件名包含附加到字符串上的全局变量。

删除varlist,会导致错误:

无效的语法
r(197);

0 投票
1 回答
165 浏览

stata - 访问存储在 numlist / local 中的数字列表的最大/最小

min()有没有办法使用Stata之类的东西访问存储在numlist或local中的最大值和最小值max()?我想归档大致与此类似的内容:

0 投票
1 回答
48 浏览

list - 将多个未指定长度的列表传递给程序

我想创建一个 Stata 程序,它将多个未指定长度的列表作为参数。但是,我不知道一旦传入列表,程序如何区分它们。

例如,我希望能够执行以下操作:

我一直在考虑的两个解决方案是:

  1. 创建额外的宏来指定每个列表的长度并传递它们
  2. 在列表之间使用分隔符

两者都不是很困难,但我认为有一种更简单的方法可以做到这一点。

我正在使用适用于 Windows 的 Stata 13。

0 投票
1 回答
62 浏览

stata - 如何以编程方式创建宏的名称并将其用作宏?

我正在使用社区贡献的命令gvselect,该命令允许执行最佳子集变量选择(一种选择变量的统计方法)。

使用后,我得到以下结果:

然后我需要在另一种统计估计方法中使用其中一个宏。

例如,我可以使用第一个如下:

(注意宏`r(best3)'被用作参数)

我的框架需要我事先不知道我需要使用哪个宏,所以我以编程方式确定它。

在这个简化的示例中,我可能必须使用r(best1),r(best2)r(best3)(实际上有更多可用的宏),具体取决于数据。

gvselect生成的所有宏都具有相同的语法 :r(best++number)

一旦我以编程方式确定了我必须使用哪个宏(例如:number = 1),我就被卡住了。

我不知道如何以编程方式创建此宏的名称,然后将其用作普通宏。我什至不确定这是否可能。

你能帮我解决这个问题吗?

我已成功将宏名称复制到普通字符串中,如下所示:

但是我如何在我的估计中使用它呢?

显然下面的代码不起作用:

0 投票
2 回答
43 浏览

stata - 为范围之间的列生成值

我有以下数据集

我想要A并且B有代表每一年的行。

我每年都扩大:

这给了我以下信息:

最终,我想要以下数据集:

这是我到目前为止所拥有的:

如何填充变量的其余部分year

0 投票
2 回答
12232 浏览

stata - 删除所有缺失值的变量

我的数据集中有5000变量和91,534观察结果。

我想删除所有值都丢失的变量:

我尝试使用dropmiss 社区贡献的命令,但即使在阅读了帮助文件之后,它似乎也对我不起作用。例如:

相反,正如其中一种解决方案所建议的那样,我尝试了以下方法:

这个由社区贡献的替代命令似乎对我有用。

但是,我想知道是否有更优雅的解决方案,或者使用dropmiss.