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

stata - 用于更改日期格式和生成图表的循环

我想遍历多个csv文件,以更改日期变量的格式并生成图表,每个图表的标题都是相应文件的名称。

csv以下是使用创建的文件之一的示例dataex

这些文件在"I:\Games CSVs"目录中,并且都是csv格式的。我确保所有文件中的变量名都是相同的。

我想获取每个文件,将其scrapedate从字符串转换为日期格式。然后,我想在 y 轴上绘制由四个变量averagethpercentile、和 表示的四条线v5,。v6ScrapeDate

到目前为止,基于谷歌搜索,我尝试了以下代码:

上面的代码包含在一个do文件中。问题是,当我这样做时File -> Do.. -> filename.do,我看不到任何图表,它只是在我的窗口中显示为end of do file。我没有看到图表!

我希望我的代码没有错误或任何错误,因为在左侧面板上,do "path/filename.do"显示为红色。我已经删除了文件中的所有空白行do,它没有分号,这与 Google 搜索答案的内容相反(答案有分号)。

我希望能够访问图表!但是它们存储在哪里?

我能够使用以下代码仅使用一个文件在一定程度上完成我想要的事情:

最后,上面的代码将 date 变量转换为数字,但将格式从2015-12-17最初更改为17dec2015.

有没有办法让它成为2015/12/172015-12-17

0 投票
1 回答
365 浏览

operating-system - 自动重命名文件

我正在尝试批量重命名操作系统上同一文件夹中的许多文件。

我有一个包含两个变量的数据集:oldnamenewname.

数据集中有更多的文件名,然后是需要重命名的实际文件,所以我想构建一些与数据集中的观察匹配的文件,重命名匹配的文件,然后将其移动到新位置。

例如,我在一个位置有三个文件:

具有字符串变量的数据集:

这是程序所需的输出:

我需要使用!运算符来实现我想要的吗?


编辑:

到目前为止,我有一种移动比赛的方法,但不能重命名它们:

0 投票
2 回答
4046 浏览

stata - 在 coefplot 中仅绘制交互项

在Stata回归后,我试图只绘制交互项的系数。

我无法使用community-contributed command做到这一点coefplot

这是一个可重现的示例和我尝试的解决方案:

还有其他方法吗?

我已经在Statalist上交叉发布了这个问题。

0 投票
1 回答
874 浏览

stata - For 循环错误(无效语法)

我刚刚学会了如何for在 Stata 中使用循环。

我在我的数据上尝试了这个,以便将我的字符串格式化变量转换为数字变量,然后将新的数字变量移动到旧的字符串格式化变量旁边。

但不知何故,Stata 给了我一条错误消息:

我还尝试了以下方法:

我想这些简单的代码片段应该可以工作,但我不知道它们为什么会失败。

有人可以帮我吗?

0 投票
1 回答
880 浏览

stata - 遍历文件夹以生成和保存每个文件的图形

以下是我为可重现的示例csv创建的文件之一:dataex

感谢对我上一个问题的回答,我能够调整我的代码以循环遍历目录"I:\Games CSVs\"并使用以下方法读取每个csv文件:

然后创建一个新变量以将数据格式更改为我想要的格式并生成折线图。

这是我的代码:

有问题的行如下:

我也试过:

我有以下问题:

  1. 该文件的标题为filename.csv,我希望删除后缀。
  2. 我也无法弄清楚如何将图表保存在磁盘上。

所有的图表(我有 52 个)都在一个接一个地闪烁。如果我可以将它们全部保存在一个文件夹中I:\Graphsfilenamefilename.csvfilename.pngfilename.jpeg

我已阅读文档。我相信graph save mygraph如果它存在则替换图形,并且由于我正在遍历目录,因此每次都将替换图形,因为我没有更改图形的名称。

0 投票
1 回答
4029 浏览

python - Python中Stata宏的等价物

我正在尝试使用 Python 进行统计分析。

在 Stata 中,我可以定义本地宏并根据需要扩展它们:

所以而不是:

我可以:

甚至:

Stata 中的宏帮助我编写干净的脚本,而无需重复代码。

在 Python 中,我尝试了字符串插值,但这在函数中不起作用。

例如:

以下运行良好:

但是,这两个都失败了:

我发现了一个类似的问题,但它没有回答我的问题:

R还有另一个关于这个的问题:

但是,我找不到任何专门用于 Python 的东西。

我想知道 Python 中是否有与 Stata 的宏类似的东西?

0 投票
1 回答
4206 浏览

foreach - 在数据集中附加多个 Excel 工作表

原始问题

在工作中导入大型数据集时,我注意到在使用该append命令时 Stata 似乎“忘记”了本地宏的一些意外行为。

这似乎更加奇怪,因为它似乎是这个命令特有的一种现象(我测试过save并且代码按预期工作)。

抱歉,如果示例有点混乱,但我经常发现display在与当地人合作时使用它很有帮助。要运行代码,只需更改全局数据。

为了忠实于我在工作中遇到的问题,我包括了该import excel部分;我对这个问题的理解不足以使这个例子变得更小。

原始问题已编辑

下面是两个代码块。第一个表明该append命令似乎可以按我的预期工作(我注意到我忘记save在我原来的问题中使用)。这个块表明,虽然附加一个带有空数据集的数据集可能并不完全直观,但它仍然可以正常工作。这种方法的优点是它消除了加载文件时对条件语句的需要。

在第二个代码块中,我尝试以append相同的基本方式使用该命令,但这次是在循环中。此代码块是从 Pearly Spencer 复制和粘贴的,但有三处小改动:

  1. 我在开始时保存了一个空数据集
  2. 我注释掉逻辑if语句
  3. append用空数据集代替(然后save是它,所以第二轮它不应该是空的)。

Stata“忘记”的本地宏是shtname. 如果您检查display语句,则在第一个循环之后不会打印任何内容。这是我的问题的位置。为了进一步证明这一点,tab脚本末尾的命令显示该变量data_name有 148 个观测值,auto.dta而没有一个观测值auto2.dta。这表明相同(即第一个)数据集被附加了两次。这表明(对我而言)append脚本的部分工作正常,但本地 marco 存在问题,shtname.

* DEMONSTRATE APPEND 似乎可以工作 *

* 跟随 PEARLY SPENCER,稍作调整 *

为了解决评论中的一些注释,在控制台中键入时可以找到 auto2.dta sysuse dir。因此,它是一个可供所有人使用的数据集。我已尽最大努力保持我的代码可复制,除非我弄错了,否则我需要做的就是设置cd上述代码才能工作。

其次,我努力确保我没有犯愚蠢的逻辑错误(如上所述,我意识到我在原始问题中省略了保存文件,这确实意味着我每次都附加一个空数据集)。也就是说,可能是我已经研究这个问题太久了,我再也看不到树上的木头了;所以,如果它仍然是一个衬里类型的问题,请放轻松!

最后,我从未说过 Stata 忘记了本地宏,只是它似乎这样做了。因此,我问这个问题是为了了解发生了什么(或者更有可能是我犯了错误的地方)。

我的输出的屏幕截图 在没有显示本地人的地方看到红色标记。在此处输入图像描述

***编辑#3 这张图片似乎显示了(迄今为止)无法解释的行为源于append而不是import

在此处输入图像描述

0 投票
1 回答
222 浏览

loops - 嵌套循环中需要大括号错误

我正在使用 Stata 中的嵌套循环处理我的第一个循环,但无法运行代码。

这是我所拥有的:

当我运行代码时,我收到错误:

无论我如何修改代码(添加或删除'或“等),都会出现此错误。

0 投票
1 回答
33 浏览

loops - 循环记录年份

我想Year使用for循环重新编码名为 as 的变量,并year在 Stata 中创建一个名为 as 的新变量。

我正在寻找的应该缩短下面提到的代码:

0 投票
1 回答
48 浏览

stata - 一个接一个地读取多个 CSV 文件时出现宏和变量问题

以下是其中一个csv文件的一些可重现数据:

我有多个这样的csv文件。

我决定为它们中的每一个单独编写代码,以读取csv并执行代码,导出图形,使用clear allmacro drop _all以便删除变量和宏(在为下一个csv文件重复代码时它们将被重新初始化)并重新运行相同的代码,只是这次是在导入不同的csv文件之后。

以下代码适用于单个 csv文件。

该代码基于以前的帖子,并且运行良好。

当我将完全相同的代码附加到同一个do文件但另一个csv文件时:

其余代码直到clear all, macro drop _all, 类似于Home1 vs. Away on January 3rd,因此生成了类似的图形,它说:

eventtime not found 无效语法

我相信这与被删除或未读取的变量有关。每个csv文件都有相同的变量名。

将来,我想将 18 个csv文件的 18 个相同代码片段附加到一个文件 do中,并执行将图形导出到特定文件的相同操作outdir(这对于第一个文件来说很好, csv显示上面当另一个文件的完全相同csv的代码附加在为第一个文件创建和导出图形的代码下方时出错。