Stata高效输入:搜狗输入法自定义短语

发布时间:2020-05-22 阅读 5164

Stata连享会   [主页](https://www.lianxh.cn/news/4  

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:


目录


1. Stata 输入:蜗牛变猎豹

8 月中旬参加完首届 Stata 用户大会后,测试了多种 Stata 编辑器,包括 sublime text 3 (ST3)atom, VScode 等等。最终发现我的需求似乎还无需用这些高大上的东西,因为 MC>>MR

我的需求很简单:把重复的工作系统化、自动化。 我的思路很简单:优化组合现有工具 = 新工具

比如,我做 Stata 讲义时,经常要输入 sysuse "auto.dta", clear,或者 sysuse "nlsw88.dta", clear,每次都输入这么长一串,很烦。又如,每次做论文中的几张基本表格(表1:基本统计量;表2:相关系数矩阵;表3:回归结果),都要找出以前的代码,复制粘贴过来。若是自己重新写,怎么着也要折腾个 5-10 分钟吧。

若是有个快捷命令就好了。于是,我用搜狗输入法自带的**【搜狗自定义短语配置】**功能,把这些需要经常用的命令、代码都做成短语,只要输入几个字母就出现一大串代码。

然后,我的打字效率就从蜗牛猎豹了:

Stata+搜狗自定义短语-范例:一分钟做好三张表
Stata+搜狗自定义短语-范例:一分钟做好三张表
Stata+搜狗自定义短语-范例2:如此快乐滴写Stata程序
Stata+搜狗自定义短语-范例2:如此快乐滴写Stata程序

2. 如何定义【搜狗自定义短语】

你可以在百度或知乎上搜索关键词【搜狗自定义短语】,相关教程很多,例如:输入法“自定义短语设置”还可以这么玩搜狗输入法-自定义短语设置的神奇妙用。这里,我只做简要说明。

2.1 输入法设定的基本规则

基本规则如下:

  • 短语:就是你打字时的缩写,通常是个简单易记的英文缩写,如 whn
  • #:表示输入法中显示的序号 (如上图中,若依次在键盘上敲入 whn2,则会输入 我和您。)

例如:

st,1 = Stata16

当你采用「搜狗输入法」打字时,只需输入 st,屏幕上第一个显示出来的词条就是 Stata16

又如,你可以作如下配置:

sysuse,1=sysuse "auto.dta", clear
sysuse,2=sysuse "nlsw88.dta", clear

就会产生如下效果:

再来个更给力的。几乎每份 dofile 都涉及结果输出问题,但频繁地敲 esttab 那一大串命令很烦,也很容易出错。索性将其定义为一个 (或一组) 短语,这样日后只需敲 esttab 就可以一次性输入一大段代码了。

这个例子中,我们定义了两种形式的代码,用搜狗输入法输入 esttab 后,你只需确定选择 1 还是 2 就能自动在两种格式之间自由选择了。

esttab,1=
*-----表3:回归结果-------
  local s "using $Out\Table3_reg.csv"  //执行时包括这一行会输出Excel表格
  local m "m1 m2 m3"
  esttab `m' `s', nogap compress replace   ///
         b(%6.3f) s(N r2_a) drop(`drop')   ///
         star(* 0.1 ** 0.05 *** 0.01)      ///
  		 addnotes("*** 1% ** 5% * 10%") 

esttab,2=
  *----------------------------------------------------begin--------
    local s "using $Out\Table3_reg.csv" 
    local m "m1 m2 m3"
    local drop ""
    #d ;
    esttab `m' `s', compress nogap replace
      b(%6.3f) t(%6.2f) star(* 0.1 ** 0.05 *** 0.01) 
      stats(Cluster N r2_a, fmt(%3s %12.0f  %9.3f)) varwidth(20) 
      drop(`drop') 
      title("Table1 Determinants of Women's Wage") 
      mtitle("OLS" "OLS" "OLS with Occupation dummies") ;
    #d cr
  *----------------------------------------------------over---------

2.2 自定义短语配置方法

虽然大家的系统不同,搜狗输入法的版本不同,但大体的设定方式是差不多的:

属性设置高级自定义短语设置直接编辑配置文件,然后在打开的文本文件中添加你的配置即可。

下图呈现了设定的过程 (点菜单比较烦人 ^=^):

细分步骤

第一步:点击[设置],快捷键 Ctrl+Shift+M
第一步:点击[设置],快捷键 Ctrl+Shift+M
第二步:设置属性
第二步:设置属性
第三步:依次点击【高级设置】-->【自定义短语设置】-->【直接编辑配置文件】
第三步:依次点击【高级设置】-->【自定义短语设置】-->【直接编辑配置文件】
第四步:在弹出的文本文档底部添加自定义短语设置,保存即可
第四步:在弹出的文本文档底部添加自定义短语设置,保存即可
第五步:按图依次点击“应用”--> “确定” 即可开始愉快的输入了
第五步:按图依次点击“应用”--> “确定” 即可开始愉快的输入了

3. 我的配置文件

下面贴出我的部分配置文件,你只需贴入你的配置文件中,根据自己的习惯修改关键词或缩写设定即可。

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」

3.1 Stata 常用命令之搜狗短语设置

st,1= Stata  
lc,1=local ""
gl,1=global ""
ests,1=est store m
sh,1=shellout "$R\.pdf"
vb,1=view browse ""
trace,1=set trace on
trace,2=set trace off

sysuse,1=sysuse "auto.dta", clear
sysuse,2=sysuse "nlsw88.dta", clear
use, 1=use ".dta", clear

pre,1=
preserve

restore

log,1=
cap log close
log using logname, text replace

log close

deli,1=
#delimit ;

#delimit cr

3.2 基本统计和回归结果相关

fsum,1=
  local v " " //连续变量
  local c " " //类别变量
  local s "$Out\Table1_sum" //文件名(或路径\文件名)
  logout, save("`s'") excel replace: ///
          fsum `v', s(mean sd p50 min max) cat(`c') label 

tabstat,1=
*-----表1:基本统计量-------
  local v " " //填入变量名
  local s "$Out\Table1_sum" //存储的文件名(或路径\文件名)
  logout, save("`s'") excel replace: ///
          tabstat `v', stat(mean sd p50 min max) f(%6.2f) c(s) 

pwcorr,1=
*-----表2:相关系数矩阵-------
  local v " " //填入变量名
  local s "$Out\Table2_corr" //存储的文件名(或路径\文件名)
  logout, save("`s'") excel replace: ///
          pwcorr_a `v', format(%6.2f) //star(0.05)

esttab,1=
*-----表3:回归结果-------
  local s "using $Out\Table3_reg.csv"  //执行时包括这一行会输出Excel表格
  local m "m1 m2 m3"
  esttab `m' `s', nogap compress replace   ///
         b(%6.3f) s(N r2_a) drop(`drop')   ///
         star(* 0.1 ** 0.05 *** 0.01)      ///
  		 addnotes("*** 1% ** 5% * 10%") 

esttab,2=
  *----------------------------------------------------begin--------
    local s "using $Out\Table3_reg.csv" 
    local m "m1 m2 m3"
    local drop ""
    #d ;
    esttab `m' `s', compress nogap replace
      b(%6.3f) t(%6.2f) star(* 0.1 ** 0.05 *** 0.01) 
      stats(Cluster N r2_a, fmt(%3s %12.0f  %9.3f)) varwidth(20) 
      drop(`drop') 
      title("Table1 Determinants of Women's Wage") 
      mtitle("OLS" "OLS" "OLS with Occupation dummies") ;
    #d cr
  *----------------------------------------------------over---------
  
twoway,1= 
    *------------------------------------------------------------Begin
    local gname "$Out\Fig01.wmf" //图形名称和存储位置
    #delimit ;
      twoway ( )
             ( )
	  , 
      ylabel(, angle(0) grid)
      legend(ring(0) position(3))
      note("数据来源: 雅虎财经!")
	  ;
    #delimit cr
    graph export "`gname'", replace
   *------------------------------------------------------------Over

3.3 Stata 程序相关:循环语句和条件语句等

prog,1=
capture program drop 
program define 
  version 13.0
  
end  

if,1=
if {
    
}
else{
    
}

for,1=
forvalues i=1/`N'{
    
}

3.4 Stata 讲义短语

title,1=
*------------------
*- 
*------------------

title,2=
*===================
*- 
*===================

dotitle,1=
*-------------------------------------
*-日期:
*-目的:
*-方法:
*-作者:连玉君,中山大学岭南学院金融系
*-主页:https://www.lianxh.cn
*-------------------------------------

Statalxh,1=
*------------ Stata连享会 ---------------	
*-

fanli,1=Stata 范例:

path,1=
*-注意:执行后续命令之前,请先执行如下三条命令
  global path "`c(sysdir_personal)'\PX_A_2017b\A1_intro"  //定义课程目录
  global D    "$path\data"      //范例数据
  global R    "$path\refs"      //参考文献
  global Out  "$path\out"       //结果:图形和表格
  adopath +   "$path\adofiles"  //自编程序 
  cd "$D"
  set scheme s2color  
  *-note: 
  *   `c(sysdir_personal)' 等价于 D:\Stata15\ado\personal

scom,1=
  *-Comments:
  * 1 
  * 2 

begin,1=
*-----------------------------------------Begin-----------

*-----------------------------------------Over------------
*-Notes: 
* 1. 
* 2. 

3.5 Markdown 相关短语和关键词

md,1=Markdown 
toc,1=[toc]
yy,1=``
lianjie,2=- []()
lianj,1=[]()
btsan,1=###
bter,1=##
tupian,1=![]()
zuozhe,1=> 作者:连玉君,中山大学岭南学院金融系
wodezuozhe,1=
 

> **作者**: (大学)    
> **E-Mail:**     

riqi,1=#$year.$month.$day
riqi,2=#$year年$month月$day日星期$weekday

4. 进阶技巧

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」

4.1 云同步自定短语

上述搜狗短语设定都存放在一个名为「PhraseEdit.txt」或「Phrases.txt」的文本文件中 (早期搜狗版本下的后缀可能是 .ini)。以往,我是定期把这份文档中的内容备份到云盘或邮箱中,然后覆盖家中电脑里的同名文件,以保证我那些可爱的自定义短语可以在家里使用。

后来发现,如果注册一个搜狗账号,那么无论在任何电脑上登录这个账号,你的搜狗短语设定会被自动同步。这就意味着,你在办公室定义的短语以及你的输入习惯可以直接迁移到你家里的那台电脑上,以及教室的电脑上。

简言之:注册一个搜狗账号,自动同步你的配置。

4.2 快速编辑自定义短语

按照第二节的介绍,要想设定一个新的搜狗短语,要点 5-6 次鼠标才能打开配置文件「PhraseEdit.txt」。于是,我在 Stata 的 profile.do 文档中定义了一行程序。

每次想要新增短语时,就直接在 Stata 命令窗口中输入 sougou,「PhraseEdit.txt」文件就会被瞬间打开。

*-------打开搜狗短语配置文件-------
program define sougou
  shellout "C:\Users\Administrator\AppData\LocalLow\SogouPY.users\00000002\PhraseEdit.txt"
end

你若效仿此法,只需把上面的代码添加到你的 profile.do 文档中即可。不知道如何打开 profile.do 文档?那就去项目主页 https://gitee.com/arlionn/StataProfile 学习一下。或者看看「聊聊Stata中的profile文件」

有些同学找不到「PhraseEdit.txt」文件的存放路径,可以采用如下两种方式之一:

  • 方法1: 依次点击电脑中的 [开始] → [搜索],然后输入[「PhraseEdit.txt」],进而从地址栏中复制地址
  • 方法2: 用 everything 软件查询 (https://www.voidtools.com/zh-cn/),然后右击文件名,选择[复制完整路径和文件名(F)]

致谢

本文受 《永澄:凡是出现两次的事情就要考虑系统化、自动化》 的启发。

欢迎分享您的短语

可以直接在本文底部添加评论,随后我会整理到本文的项目主页:https://gitee.com/arlionn/sougou 中去。当然,您也可以发送邮件至 StataChian@163.com 以便提交你的短语设定。

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh