如何设定Stata中数字的显示格式

作者:羊洋(西北师范大学)
邮箱:im.yang@foxmail.com

引言

在应用Stata的过程中,我们经常会遇到一些数字显示格式的问题,比如在估计结果中出现科学计数法使得结果不够直观,有一些投稿图要求图中的数字必须保留一位小数等。这些虽然都是小问题,但有时却让人很抓狂。其实这些格式问题,都可以通过代码进行控制,本文就从显示格式的代码组成入手,对这一问题进行梳理。

Stata中控制数据显示格式的代码形如%7.2f,它由以下元素组成:首先输入%,表明开始设定格式。接着可以选择性输入负号"-"和数字"0",负号表示数据靠左列式,输入的数字0则会保留在开头。然后依次输入数字w"."和数字d,数字w表示显示格式的宽度,数字d表示小数点后保留的小数位数。再然后输入字母efg,用于标记具体格式,e表示结果用科学计数法表示,f表示固定格式,g表示通用设定,即Stata会自动设定显示格式。最后,可以选择性的输入字母c,将数据设置成有逗号的西方计数方法(多用于表示价格),即小数点之前每三位打一个逗号。

接下来我们先结合display命令用一些例子具体说明上述含义,再进一步说明如何设置变量、估计结果和图片中数字的显示格式。

1 -display-命令结果显示

使用display命令列式结果时,在数据或数学表达式之前添加所要设定的格式类型,就能显示想要的数字格式。比如有原始数据1000.12345,我们对该数据做一些显示格式的设定,结果如下:

. dis  %7.2f  1000.12345
1000.12

. dis  %9.2e  1000.12345
1.00e+03

. dis  %8.2fc  1000.12345
1,000.12

可见,%7.2f设定了显示结果只保留两位小数;%9.2e将结果用科学计数法表示,并保留两位小数(值得说明的是,科学计数法中宽度的设置格式比较特殊,显示宽度要大于或等于小数位数+7,即小数位数为2时宽度应至少为9,详情请见help format);%8.2fc在第一个结果的基础上采用西方计数方法。值得说明的是,当采用西方计数方法时,由于显示结果中多了一个逗号,因此要增加结果显示的宽度,即宽度从7变为8。

2 变量的显示格式

对于数值型的变量,可以直接用format命令定义显示格式,在format命令后添加需要改变显示格式的变量名称,在加上具体的显示设定(如%6.3f)。用Stata提供的汽车价格数据进行举例:

. sysuse auto.dta, clear
. list price gear in 1/3
     +------------------+
     | price   gear_r~o |
     |------------------|
  1. | 4,099       3.58 |
  2. | 4,749       2.53 |
  3. | 3,799       3.08 |
     +------------------+
. format price %7.1fc   / /保留一位小数,并保留价格中的逗号
. format gear %6.3f     / /保留三位小数
. list price gear in 1/3
     +--------------------+
     |   price   gear_r~o |
     |--------------------|
  1. | 4,099.0      3.580 |
  2. | 4,749.0      2.530 |
  3. | 3,799.0      3.080 |
     +--------------------+

在回归分析之前,通常需要对变量进行描述性统计,在描述性统计时,也会面临显示格式的问题。我们选择一些变量列出它们的描述性统计,并设定显示类型为保留两位小数。在命令tabstat的选项里加入f(%9.2f)即可进行控制。

. tabstat price mpg rep78 length turn foreign, ///
>         stats(n mean sd min max) c(s) f(%9.2f)

    variable |         N      mean        sd       min       max
-------------+--------------------------------------------------
       price |     74.00   6165.26   2949.50   3291.00  15906.00
         mpg |     74.00     21.30      5.79     12.00     41.00
       rep78 |     69.00      3.41      0.99      1.00      5.00
      length |     74.00    187.93     22.27    142.00    233.00
        turn |     74.00     39.65      4.40     31.00     51.00
     foreign |     74.00      0.30      0.46      0.00      1.00
----------------------------------------------------------------

3 估计结果的显示格式

通常在估计完一个模型后,我们会将估计的结果储存起来,以便同其它估计结果一起输出比较。在输出估计结果时,主要涉及到估计系数和标准误(或t值、p值)的显示问题。比如当估计系数较大时,Stata有时会将系数用科学计数法显示,这对于我们比较不同模型的系数大小时存在不够直观的缺点,这时就需要我们对结果的显示格式进行设定。

还是利用汽车价格的数据进行说明,先做了两个对汽车价格的回归模型,再用esttab命令输出估计结果,该命令可以分别对估计系数和标准误进行格式设定,比较方便。在命令的选项中加入b()就能设定系数的显示格式,加入se()设定标准误的格式,括号中填写想要设定的具体格式。进一步,有时模型的F统计量过大,也可能会用科学计数法列式,因此可以添加sfmt()选项控制输出的单值的格式。

. qui reg price mpg
. est store reg1
. qui reg price mpg rep78
. est store reg2
* 输出估计结果
. esttab reg1 reg2, b(%9.2f) se(%7.2f) sfmt(%7.3f) / / /
>         star(* 0.1 ** 0.05 *** 0.01) mtitle(reg1 reg2) / / /
>         scalar(r2 r2_a N F) compress nogap

------------------------------------
                 (1)          (2)   
                reg1         reg2   
------------------------------------
mpg          -238.89***   -271.64***
             (53.08)      (57.77)   
rep78                      666.96*  
                         (342.36)   
_cons       11253.06***   9657.75***
           (1170.81)    (1346.54)   
------------------------------------
N                 74           69   
r2             0.220        0.251   
r2_a           0.209        0.228   
F             20.258       11.057   
------------------------------------
Standard errors in parentheses
* p<0.1, ** p<0.05, *** p<0.01

4 图片中数字的显示格式

之前在论文投稿时,杂志社要求图片中的数要保留一位小数,在网上查了一些资料才完成设定。还是以刚才的数据为例,画出汽车价格对里程数的散点图,并附加拟合线。要想设置图片中的数字都保留一位小数,其实只要在对应的ylabelxlabel的子选项中添加format()表明特定格式,代码和结果如下:

#delimit ;
twoway (scatter price mpg) (lfit price mpg)
    ,
    ylabel(, format(%9.1f) angle(0) nogrid)
    xlabel(, format(%3.1f))
;
#delimit cr
设置图片中的数字保留一位小数显示

总结

只要了解了Stata中控制数据显示格式的代码(如%7.2f),改变数据的显示格式就不困难。在各个情境下,基本都可以通过添加选项的方法来进行控制,不同的是各个命令添加显示格式选项的位置有差异,不过大多可以通过查阅命令对应的help文件来获取选项添加的位置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 这部分是对Stata编程的简单介绍。主要讨论宏和循环,并展示如何编写简单程序。编程是一个很大的主题,我在这里仅进行...
    谢作翰阅读 13,274评论 0 13
  • 充满活力的一天开始啦 2019年 3月18日 星期一 起床:6:30。 就寝:10:30 天气:晴 心情:开心 纪...
    阿文YovinTeng阅读 157评论 0 0
  • 我和老周同学的爱情 我还是很喜欢你啊,从小时候到现在。 我和小周同学啊认识九年,搁她们说就是三年之痛七年...
    阿袁的甜品屋阅读 394评论 0 2
  • onKeyDown(e: KeyboardEvent): void {console.log(e);if (e.k...
    价值投机168阅读 359评论 0 0
  • 那一次的离别 是我豪然的应许 因为我知道 爱不能拿来束缚你的自由 所以我在分别的时刻 我依依不舍的在你身边 不停的...
    曾时获阅读 116评论 0 0