作者:連玉君 (知乎 | 簡書 | 碼雲)

Stata連享會 精彩推文1 || 精彩推文2

下載:老連的 profile.do

Note:對於微信公眾號用戶,請點擊底部 【閱讀原文】 查看下載鏈接。

今天說說多數 Stata 用戶都知道的東西 (~~知道和熟悉是兩回事~~) —— 就是這貨:

每次一開機,Stata 會自動找到這個名為 profile.do 的文件,並執行裡面的所有命令,顯示為 running D:stata15profile.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)adoplus"
*-個人文件夾位置
sysdir set PERSONAL "`c(sysdir_stata)adopersonal"

這裡,sysdir set PLUS …… 指定了日後外部命令的存放位置:在 Stata 安裝路徑下的 adoplus 子文件夾中。其中,`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)dolog-`fn1-`fn.log, text replace
cmdlog using `c(sysdir_stata)docmd-`fn1-`fn.log, replace

前面四行語句用於確認 Stata 安裝目錄下是否有 【do】 文件夾,如果沒有就自動新建一個。

後面四行用於從電腦中的日期和時間中去除字元串,將其作為新生成日誌文件的文件名。主要的好處是,即使你一天內開啟-關閉無數次 Stata,日誌文件都不會重名:光陰滾滾向東流呀!

下面是我的 【D:stata15do】 文件夾下自動存放的日誌文件:

2. 一些錦上添花的設定

對於一個每天都會開著 Stata 工作的用戶來講,如果可以把 Stata 作為一個控制台,從這裡發布指令,也是一個蠻幸福的事情。比如,可以迅速打開常用文件夾、快捷地打開經常訪問的網站,等等。

2.1 顯示常用網址

2.2 快速打開常用文件夾

profile.do 文件中定義一些小程序,核心命令其實就是 cdcdout,就可以快捷地打開常用文件夾了。

比如,定義一個名為 sj (Stata Joural 的簡稱) 的小程序:

任何時候,只需在 Stata 命令窗口輸入 sj 命令就可以打開存放 Stata Journal 的文件夾了:

附錄:連玉君的 profile.do 文檔

  • 下載:老連的 profile.do Note:對於微信公眾號用戶,請點擊底部 【閱讀原文】 查看下載鏈接。
  • 在線查看:

*--------------------------
* 連玉君的 profile.do 文檔
*--------------------------

*-說明:
* 此文件設定了每次啟動 Stata 時需要做的一些基本設定
* 你可以在此文件中添加你希望在stata啟動時立刻執行的命令

*-不要自動更新
set update_query off

*-基本參數設定
set type double // 設定 generate 命令產生的新變數為雙精度類型
set matsize 800 // 設定矩陣的維度為 2000x2000
set scrollbufsize 2000000 // 結果窗口中顯示的行數上限
set more off, perma // 關閉分頁提示符

set cformat %4.3f //回歸結果中係數的顯示格式
set pformat %4.3f //回歸結果中 p 值的顯示格式
set sformat %4.2f //回歸結果中 se值的顯示格式

set showbaselevels off, permanently
set showemptycells off, permanently
set showomitted off, permanently
set fvlabel on, permanently

*-PLUS 和 PERSONAL 文件夾
*-有關這一部分的完整設定命令,請輸入 help set 命令進行查看
sysdir set PLUS "`c(sysdir_stata)adoplus" // 外部命令的存放位置
sysdir set PERSONAL "`c(sysdir_stata)adopersonal" // 個人文件夾位置

*-採用相似的方式,可添加其它允許stata搜索的目錄
adopath + "`c(sysdir_stata)adopersonal\_myado"
*adopath + "路徑2"

* log文件:自動以當前日期為名存放於 stata15do 文件夾下
* 若 stata 安裝目錄下無【do】文件夾,則自動建立一個,用於存放日誌文件
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)dolog-`fn1-`fn.log, text replace
cmdlog using `c(sysdir_stata)docmd-`fn1-`fn.log, replace

*-----------------------------------------------
*-以下是我的個性設定,可以忽略,也可以自行修改
*-----------------------------------------------

dis in w _n(5) ///
" ------------------------------------------------------"
dis in w " -------------- Stata 15 dofile 轉碼方法 --------------"
dis in w " ------------------------------------------------------" _n

dis in w _n(1) ///
" 用 Stata15 打開 Stata14 以下的 dofile 時,屏幕會提示 " _n
dis in w " ....... The document is not encoded in UTF-8! ......." _n
dis in w " 處理方法:在 Encoding: 下拉菜單中選擇 「Chinese(GBK)」,點擊 OK " _n
dis in w " 注意:不要勾選「[ ] Dot not show this message again」" _n _n

dis in w _n _n ///
" ------------------------------------------------------"
dis in w " ----- Stata 15 轉碼方法(一次性處理 .dta 轉碼問題) ----"
dis in w " ------------------------------------------------------" _n
dis in w " *-說明: dofile 或 數據文件中包含中文字元時,需要轉碼才能正常顯示"
dis in w " "
dis in w " *-Step 1: 分析當前工作路徑下的編碼情況(可省略) "
dis in w " ua: unicode analyze * "
dis in w " *-Step 2: 設定轉碼類型 "
dis in w " ua: unicode encoding set gb18030 // 中文編碼 "
dis in w " *-Step 3: 轉換文件 "
dis in w " ua: unicode translate * "

*---------
*-常逛網址
*---------
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

dis in w "Stata官網:" ///
`"{browse "http://www.stata.com": [Stata.com] }" ///
`"{browse "http://www.stata.com/support/faqs/": [Stata-FAQ] }" ///
`"{browse "https://blog.stata.com/": [Stata-Blogs] }" ///
`"{browse "http://www.stata.com/links/resources.html": [Stata-資源鏈接] }" _n

dis in w "Stata論壇:" ///
`"{browse "http://www.statalist.com": [Stata-list] }" ///
`"{browse "https://stackoverflow.com": [Stack-Overflow] }" ///
`"{browse "http://bbs.pinggu.org/": [經管之家-人大論壇] }" //_n

dis in w "Stata資源:" ///
`"{browse "http://www.jianshu.com/u/69a30474ef33": [Stata連享會-簡書] }" ///
`"{browse "https://www.zhihu.com/people/arlionn/": [Stata連享會-知乎] }" ///
`"{browse "https://gitee.com/arlionn": [Stata連享會-碼雲] }"

dis in w _col(12) ///
`"{browse "http://www.jianshu.com/p/f1c4b8762709": [Stata書單] }" ///
`"{browse "http://www.jianshu.com/p/c723bb0dbf98": [Stata資源匯總] }" //_n

dis in w "Stata課程:" ///
`"{browse "https://stats.idre.ucla.edu/stata/": [UCLA在線課程] }" ///
`"{browse "http://www.princeton.edu/~otorres/Stata/": [Princeton在線課程] }" _n

dis in w "Stata現場:" ///
`"{browse "http://www.peixun.net/view/307.html": [Stata初級班] }" ///
`"{browse "http://www.peixun.net/view/308.html": [Stata高級班] }" ///
`"{browse "http://i.youku.com/arlion": [Stata優酷視頻] }"

dis in w "學術論文:" ///
`"{browse "http://scholar.chongbuluo.com/": [學術搜索] }" ///
`"{browse "http://scholar.cnki.net/": [CNKI] }" ///
`"{browse "http://xueshu.baidu.com/": [百度學術] }" ///
`"{browse "http://www.jianshu.com/p/494e6feab565": [Super Link] }" _n

*-----------------
*-快速進入相應目錄
*-----------------
* 定義一些小程序,在命令窗口中輸入幾個字母便可打開指定文件

dis in w _n(2) " "
dis _n _n _n in w "myQuick: sj | wx | mylec | myado | mytech | mysof | sougou | uniall"

local p "sj"
cap program drop `p
program define `p
local pwd : pwd
qui cd "E:BaiduYun百度雲同步盤計量STATA文檔Stata_Journal"
qui cdout
qui cd "`pwd"
end

local p "mysof"
cap program drop `p
program define `p
qui cd "E:BaiduYun百度雲同步盤DSoftware"
qui cdout
end

local p "mylec"
cap program drop `p
program define `p
qui cd "E:BaiduYun百度雲同步盤計量[]Finished"
qui cdout
end

local p "myado"
cap program drop `p
program define `p
qui cd "`c(sysdir_stata)adopersonal\_myado"
qui cdout
end

local p "mytech"
cap program drop `p
program define `p
cd "E:BaiduYun百度雲同步盤授課"
cdout
end

local p "wx"
cap program drop `p
program define `p
cd "E:BaiduYun百度雲同步盤F微博-微信"
cdout
end

*-------------打開搜狗短語定義---------------
*-文件地址查詢:
*-方法1: 可以依次點擊 [開始]->[搜索],然後輸入 [Phrases.ini]
* 進而從地址欄中複製地址
*-方法2: 用 everything 軟體查詢,然後右擊文件名,選擇[複製完整路徑和文件名(F)]
local p "sougou"
cap program drop `p
program define `p
shellout C:UsersAdministratorAppDataLocalLowSogouPY.users 0000002PhraseEdit.txt
end

*------------------------------------------------------
*----- Stata 15 轉碼方法(一次性處理 .dta 轉碼問題) ----
*------------------------------------------------------
*-一次性轉換當前工作路徑下的所有文件
* 使用方法:在命令窗口中輸入 uniall 命令即可。
cap program drop uniall
program define uniall
*-說明: dofile 或 數據文件中包含中文字元時,需要轉碼才能正常顯示
*-Step 1: 分析當前工作路徑下的編碼情況
*unicode analyze *
*-Step 2: 設定轉碼類型
ua: unicode encoding set gb18030 // 中文編碼
*-Step 3: 轉換文件
ua: unicode translate *
end

關於我們

  • Stata 連享會(公眾號:StataChina)】由中山大學連玉君老師團隊創辦,旨在定期與大家分享 Stata 應用的各種經驗和技巧。
  • 公眾號推文同步發佈於 CSDN-Stata連享會 、簡書-Stata連享會 和 知乎-連玉君Stata專欄。可以在上述網站中搜索關鍵詞StataStata連享會後關注我們。
  • 點擊推文底部【閱讀原文】可以查看推文中的鏈接並下載相關資料。
  • Stata連享會 精彩推文1 || 精彩推文2

聯繫我們

  • 歡迎賜稿: 歡迎將您的文章或筆記投稿至Stata連享會(公眾號: StataChina),我們會保留您的署名;錄用稿件達五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
  • 意見和資料: 歡迎您的寶貴意見,您也可以來信索取推文中提及的程序和數據。
  • 招募英才: 歡迎加入我們的團隊,一起學習 Stata。合作編輯或撰寫稿件五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
  • 聯繫郵件: [email protected]

往期精彩推文

  • Stata連享會推文列表1
  • Stata連享會推文列表2
  • Stata連享會 精彩推文1 || 精彩推文2

qr06.cn/B9EOq8 (二維碼自動識別)

weixin.qq.com/r/7Ujm-tf (二維碼自動識別)


推薦閱讀:
相关文章