4

这是一个示例程序.do文件,sampleprog.do

program sampleprog
egen newVar = group (`1' `2')
end

如何将其发布在我的网站(或保管箱)上,以便其他人可以像这样将其安装到他们的 Stata 中?

net from http://www.mywebsite.com/sampleprog.do
*** or may be like like this:
ssc install ...

我阅读了有关stata.toc...的文档,但我不太明白。我应该上传哪些文件,应该是一个文件夹还是什么?

(PS:我绝对可以简单地通过电子邮件发送.do文件,但在我的情况下这不是一个选项。)

4

2 回答 2

4

以下是有关如何使用您自己的网站与他人共享程序或数据文件的完整说明。我尝试使用 Dropbox,但 Stata 12 似乎存在 https 问题,这是所有 Dropbox 公共链接的协议。如果您想使用 Dropbox,我建议您创建一个共享文件夹,以便在您的协作者的机器上同步。该答案的其余部分假设您有一个通过 http 提供页面的网站,或者正在使用支持 https 的 Stata 13。

如果这是一次性的事情,您可以通过将文件放在您的网站上并告诉您的合作者输入来跳过此答案的其余部分:

. copy http://your-site.com/ado/program.ado program.ado

这会将ado指定 url 处的文件复制到用户的当前目录中。如果您想提供有关您的文件的信息,计划与多人共享并需要维护/记录一组文件,请继续阅读!

第 1 步在您的网站上创建一个文件夹来保存程序。我会打电话给我的ado/

步骤 2添加要共享的程序文件、帮助文件和数据文件。对于此示例,我创建了一个ado名为的简单文件unique.ado,其内容如下:

********************************************** unique.ado
capture program drop unique
program define unique
    *! Count and number observations within group defined by varlist
    *  Example: unique person_id, obs(prow) tobs(pcount) sortby(time)
    *           to count and number rows by a variable called person_id
    syntax varlist, obs(name) tobs(name) [sortby(varlist)]
    bys `varlist' (`sortby') : gen long `obs' = _n
    bys `varlist' (`sortby') : gen long `tobs' = _N
    la var `obs' "Number of this row within `varlist' group."
    la var `tobs' "Total number of rows with identical `varlist' values."
end

步骤 3创建一个文件stata.toc,用于描述您希望共享的文件。这是我的:

********************************************** stata.toc
v 3
d Program to count observations by group
p unique [The unique.ado program for counting observations by group]

这些文件可能很复杂。我不会在这里介绍许多功能,但您可以阅读此文档以了解更多信息。

步骤 4stata.toc为以字母开头的行定义的每个包创建一个包文件p。这是我unique上面定义的包的包文件:

********************************************** unique.pkg
v 3
d unique
d Program to count observations by group
d Distribution-Date: 28 June 2012
f unique.ado

您的目录现在如下所示:

ado/
    stata.toc
    unique.ado
    unique.pkg

第 5 步使用网站!这是要输入的命令。

. net from http://example.com/ado/
. net describe unique
. net install unique

这是输入第一个命令后您将看到的内容:

-----------------------------------------------------------------------------------
http://www.example.com/ado/
Program to count observations by group
-----------------------------------------------------------------------------------

PACKAGES you could -net describe-:
    unique            [The unique.ado program for counting observations by group]
-----------------------------------------------------------------------------------

第二个命令会告诉你更多关于包的信息net describe unique

---------------------------------------------------------------------------------------
package unique from http://www.example.com/ado
---------------------------------------------------------------------------------------

TITLE
      unique

DESCRIPTION/AUTHOR(S)
      Program to count observations by group
      Distribution-Date: 28 June 2012

INSTALLATION FILES                               (type net install unique)
      unique.ado
---------------------------------------------------------------------------------------

第三个命令将安装包net install unique

checking unique consistency and verifying not already installed...
installing into /Users/cpoliquin/Library/Application Support/Stata/ado/plus/...
installation complete.

编辑

请参阅下面答案中尼克的评论。我希望这个例子简单,我不希望其他人使用这个程序。如果您打算向 Stata Journal 或 SSC 提交内容,那么他​​的评论当然适用!我希望这个答案可以为那些被官方文档迷惑的人提供一个不错的教程。

于 2013-06-28T13:18:36.550 回答
2

这对于评论来说太长了,所以这将是一个额外的答案。

  1. 您的示例使用程序名称unique。如果您search unique, all(或在 Stata 13 中search unique),您会发现自 1998 年以来已在 SSC 上安装了同名的用户编写程序。如果(且仅当)他们尝试使用时,这将为您的用户造成名称冲突您的程序以及早期的程序。更一般的建议是search查看程序名称是否已在使用中,以避免这些问题。

  2. 具体来说,尽管您可能只是将您unique的示例用作任意示例,但请注意它包含错误。Anint不包含足够的位来准确保存大型数据集的观察数。此外,作为一种风格,unique可以改变数据的排序顺序,这被广泛认为是糟糕的数据管理风格。

  3. 您的示例涉及传播没有随附帮助文件的程序文件。可以这么说,SSC 网站永远不会接受这样的程序,Stata Journal甚至不会在编写帮助文件之前根据这样的提交来审查论文。在代码中包含解释性注释可能足以满足您的个人实践,但它低于一般的 Stata 标准。

  4. Stata 13 现在支持 https。请参阅http://www.stata.com/manuals13/u.pdf,第 3.6 节。

简而言之,我很欣赏您试图解释如何做某事,但它已经有据可查,并且明确和隐含地,您的一些建议低于社区标准。

于 2013-06-28T15:30:07.640 回答