Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者:王舒瑶 (吉林大学)
邮箱:378807478@qq.com
目录
在开始介绍双引号和复合双引号之前,我们先来认识一下暂元的引号使用。暂元的左右引号是由键盘上不同的键打出来的。其中,左边为 Esc 下方的那个键 `
。右边为 Enter 左侧的那个键 '
。下面是在循环语句中常见的例子。
*给变量名统一添加后缀 tmp
sysuse auto.dta, clear
foreach var of varlist make-foreign{
rename `var' `var'_tmp
}
双引号最常见的用法是来包裹字符串。比如说 "Yes"
,"No"
,"my dir\my file"
。双引号的左右引号是由键盘上相同的键打出来的,即键盘 Enter 左侧的那个键 "
。
. webuse hbp2, clear
. des sex //可以看出 sex 是 string variable
Variable Storage Display Value
name type format label Variable label
---------------------------------------------------------------
sex str6 %9s Sex
. count if sex == "male" //统计 sex 为 male 的观测值个数
. label variable age_grp "age groups in 5-year increments" //给 age_group 这个变量加标签
. des age_grp
Variable Storage Display Value
name type format label Variable label
------------------------------------------------------------------------------
age_grp byte %8.0g agefmt age groups in 5-year increments
复合双引号其实可以理解为在暂元的引号 (` '
) 里嵌套双引号 (" "
),例如 `"compound quotes"'
。关于复合双引号的更多介绍,详见连享会推文「普林斯顿Stata教程(三) - Stata编程」。
通常我们在遇到下列情形时会需要使用引号:显示着重论述的字符串,显示特殊字符串,表示引用的字符串。关于引号的更多介绍,详见「引号的用法及举例」。当引号里面还有引号时,对于外面的那层引号,我们就需要使用复合双引号,从而让 Stata 更清晰地得知我们赋予它命令的意义。
首先,我们来看使用复合双引号来保护着重论述的字符串。例如,我们想让 Stata 显示 The hopefully "final" run
这句话。但像下面这样输入命令的话,Stata 会报错。
. display "The hopefully "final" run"
The hopefully final" run" invalid name
Stata 理解的是 "The hopefully" final "run"
。因为 final
左右两个引号并没有把这个单词包围起来,故在 Stata 看来是一句无效表达。Stata 的复合双引号可以解决这个问题。
由于打开关闭符号不同,这些引号可以嵌套。复合引号可以在任何使用双引号的地方使用。如果引用的文本包含双引号,则必须使用复合引号。我们回到上面那个例子,按照下面这样输入就可以正常显示了。
. display `"The hopefully "final" run"'
The hopefully "final" run
接着,我们使用复合双引号来保护特殊字符串。例如,Stata 论坛有这样一个问题:数据是字符串,里面既包括空格又包括双引号,如何写一个命令,搜索出所有包含 Today is "Sunday"
这个字符串的观测值?关于该问题的讨论,详见「Loop with spaces and quotes」。
. clear all
. set more off
. local expression `"`"Today is "Sunday""'"' //把 Today is "Sunday" 存入 expression 暂元
. set obs 1
. gen text= `"Today is "Sunday" and tomorrow is "Monday""'
. gen flag=0
. set trace on //Stata 程序语言, 追踪项目的 debug 进程
. foreach term in `expression'{
2. replace flag=1 if strpos(text, `"`term'"') > 0
3. }
. tab flag
flag | Freq. Percent Cum.
------------+-----------------------------------
1 | 1 100.00 100.00
------------+-----------------------------------
Total | 1 100.00
最后,我们使用复合双引号来保护自带双引号的暂元。例如,暂元 answ
自带一些引号标识的时候,复合双引号使用起来会更有效。假设 answ
包含了字符串 I "think" so
:
. local answ `"I "think" so"'
. dis "`answ'" //Stata 会自动把它扩展成为 "I "think" so"
I think" so" invalid name
相比较下,Stata可以更好的识别如下语句:
. local answ `"I "think" so"'
. dis `"`answ'"' //Stata 会自动把它扩展成为 `"I "think" so"'
I "think" so
最后,大家可以试试下面两个命令输出的不同结果。
. display `"test"'
test
. display `""test""'
"test"
Note:产生如下推文列表的 Stata 命令为:
lianxh 暂元 编程, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
和songbl
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh