Stata开机设定 - profile.do 文档

Stata开机设定 - profile.do 文档

作者:连玉君 (知乎 | 简书 | 码云)

下载:老连的 profile.do

Note:对于微信公众号用户,请点击底部 【阅读原文】 查看下载链接。
连享会最新专题直播
推文更新 2021/7/6 9:50

今天说说多数 Stata 用户都知道的东西 (~~知道和熟悉是两回事~~) —— 就是这货:

每次一开机,Stata 会自动找到这个名为 profile.do 的文件,并执行里面的所有命令,显示为 running D:\stata15\profile.do ...

这些命令可能是为了满足如下诉求:

Stata: 开机基本诉求 - 每次打开 Stata,我希望她能把屏幕上呈现的那些结果自动记录在一个 txt 文档中,以便发给老板查看,让他知道我有多努力;或是在电脑崩溃时可以找回自己悲惨兮兮写出的那些命令,……。这很容易设定! - 每次打开 Stata,我都希望只需输入几个字母就能打开我经常放问的一些文件夹。比如,查看 Stata Journal 各期 PDF 文件,比如进入我备课的文件夹,……。这些~~也很容易~~设定! ……

1. 最重要的设定

根据我的经验,最重要的设定只有两个

一个是设定文件路径,以便每次使用 ssc installgithub install 等命令安装外部命令时,Stata 可以自动将下载的文件放到合适的位置,方便我们调用 (参见 「Stata: 外部命令的搜索、安装与使用」);

另一个是开机是自动生成日志文件,记录在屏幕上显示的所有信息,以便于我们追踪自己的工作历程,在突然死机等突发情况下找回那些已经执行过但没有及时保存的代码。

其他诸多可以自定设定的参数都在这个页面中:help set。包括:结果窗口中的行距 (help linegap),图形模板 (help set scheme) 等等。

1.1 设定外部命令的下载路径

profile.do 文件中最核心的命令就两条:(详情参见 help sysdirhelp set)

*-外部命令的存放位置 (下载路径)
sysdir set PLUS "`c(sysdir_stata)'ado\plus"    
*-个人文件夹位置
sysdir set PERSONAL "`c(sysdir_stata)'ado\personal"

这里,sysdir set PLUS …… 指定了日后外部命令的存放位置:在 Stata 安装路径下的 ado\plus 子文件夹中。其中,`c(sysdir_stata)' 是一个暂元,里面存放了 Stata 的安装路径:输入 sysdir 后显示的第一个文件路径。例如,我的 stata15 存放于 D盘 根目录下,所以,`c(sysdir_stata)' = D:\stata15

补充说明: - 你可以临时更改外部命令的下载路径,命令为: net set ado dirname (存放 .ado.hlp 文件的路径);
net set other dirname (存放作者提供的数据文件和范例 dofiles 等附件文件)。

1.2 开机自动生成日志文件

在 Stata 中,可以配合使用 log using filenamelog close 命令来开启和关闭日志文件。对于老用户来讲,这显得很麻烦。在 profile.do 文件中添加如下几行命令就可以实现自动生成以开启 Stata 的时间为文件名称的日志文件:

cap cd `c(sysdir_stata)'do
if _rc{
   mkdir `c(sysdir_stata)'do  //检测后发现无 do 文件夹,则自行建立一个
}

local fn = subinstr("`c(current_time)'",":","-",2)
local fn1 = subinstr("`c(current_date)'"," ","",3)
log    using `c(sysdir_stata)'do\log-`fn1'-`fn'.log, text replace
cmdlog using `c(sysdir_stata)'do\cmd-`fn1'-`fn'.log, replace

前面四行语句用于确认 Stata 安装目录下是否有 【do】 文件夹,如果没有就自动新建一个。

后面四行用于从电脑中的日期和时间中去除字符串,将其作为新生成日志文件的文件名。主要的好处是,即使你一天内开启-关闭无数次 Stata,日志文件都不会重名:光阴滚滚向东流呀!

下面是我的 【D:\stata15\do】 文件夹下自动存放的日志文件:


连享会最新专题直播

2. 一些锦上添花的设定

对于一个每天都会开着 Stata 工作的用户来讲,如果可以把 Stata 作为一个控制台,从这里发布指令,也是一个蛮幸福的事情。比如,可以迅速打开常用文件夹、快捷地打开经常访问的网站,等等。

2.1 显示常用网址



2.2 快速打开常用文件夹

profile.do 文件中定义一些小程序,核心命令其实就是 cdcdout,就可以快捷地打开常用文件夹了。

比如,定义一个名为 sj (Stata Joural 的简称) 的小程序:



任何时候,只需在 Stata 命令窗口输入 sj 命令就可以打开存放 Stata Journal 的文件夹了:



附录:连玉君的 profile.do 文档

*--------------------------
* 连玉君的 profile.do 文档
*--------------------------

* arlionn@163.com
* V1: 2021/1/15 11:41
* V2: 2021/4/6  14:40
* V3: 2021/7/5 15:50   PLUS 统一放置于 D:/stata/plus 

* 连享会·主页:https://www.lianxh.cn



*-说明:
* 此文件设定了每次启动 stata 时需要做的一些基本设定
* 你可以在此文件中添加你希望在stata启动时立刻执行的命令
* 你也可以自行修改相关设定
* 更多相关设定: help set



*-不要自动更新
  set update_query  off  // on

*-系统参数设定			
  set type double           // 设定 generate 命令产生的新变量为双精度类型
  set matsize 800           // 设定矩阵的维度为 800x800, 可以修改,上限为 11000
  set scrollbufsize 2000000 // 结果窗口中显示的行数上限
  set more off, perma       // 关闭分页提示符
  
  *-结果显示格式
  set cformat  %4.3f  //回归结果中系数的显示格式
  set pformat  %4.3f  //回归结果中 p 值的显示格式      
  set sformat  %4.2f  //回归结果中 se值的显示格式     

  *-有点危险的设定 (2020/2/11 9:41)
  *-目前来看,这些设定只会影响 -xtabond-, -xtdpd- 命令的执行
* set showbaselevels on, permanently
* set showemptycells on, permanently  // 2020/2/11 9:33 请务必删除/关闭这条设定,否则会导致 xtabond 和 xtdpd 命令报错
* set showomitted off, permanently    // 2020/2/11 9:33 请务必删除/关闭这条设定,否则会导致 xtabond 和 xtdpd 命令报错
  set fvlabel on, permanently


*-文件路径设定:外部命令的存放位置

*  Note-有关这一部分的完整设定命令,请输入 help set 命令进行查看

  global path "D:/stata"   // 统一存放地址

  sysdir set PLUS `"$path/plus"'         // 外部命令的存放位置
  sysdir set PERSONAL `"$path/personal"' // 个人文件夹位置
  
  *采用相似的方式,可添加其它允许stata搜索的目录
  adopath + `"`c(sysdir_personal)'/_myado"'
  *adopath + `"路径2"' //自行添加的放置其他外部命令的路径
  adopath + "D:/myado"  // 添加其他放置 adofiles 的路径


* log文件:自动以当前日期为名存放于 stata15/do 文件夹下
* 若 stata1x/ 下没有 do 文件夹,则本程序会自动建立一个 
  cap cd `"$path/do"'
  if _rc{
     mkdir `"$path/do"'  //检测后发现无 do 文件夹,则自行建立一个
  }
  
  local fn = subinstr("`c(current_time)'",":","-",2)
  local fn1 = subinstr("`c(current_date)'"," ","",3)
  log    using $path/do/log-`fn1'-`fn'.log, text replace
  cmdlog using $path/do/cmd-`fn1'-`fn'.log, replace


  
*-stata启动后自动进入该目录 (自行设定)

    cd `"`c(sysdir_personal)'"' 
  * cd `"D:/mypaper/paper1"'    // 设定你最近经常打开的路径

  
*------------------
*- 网址导航
*------------------
  
* dis in w _n(3)  // 空三行

*-常逛网址
 
  dis in w _n "   "
  
  dis _n in w _col(10) _dup(45) "="
  dis    in w _col(10) _n _skip(20) "Hello World! Hello Stata!" _n
  dis    in w _col(10) _dup(45) "=" _n 
  
  cap songbl 
  if _rc==0{
     songbl all
	 dis in w _n(1) as error _col(10) _dup(45) "-" 
	 songbl 
  }
  else{
     cap ssc install songbl, replace
	 if _rc==0{
	    songbl all
		dis in w _n(1) as error _col(10) _dup(45) "-" 
	    songbl 
	 }
  }
  
  dis _n(2) as text " "
  
  cap lianxh
  if _rc{
     ssc install lianxh, replace
  }

  dis as error _n(1)  _col(10) _dup(46) "-" 
  dis as input _n(0)  _col(11) `"Stata 资源搜索: {stata "help lianxh"}"' _skip(5) `"{stata "help songbl"}"'
  dis as error _n(0)  _col(10) _dup(46) "-" 


  
关于我们

编辑于 2021-07-06 09:51