Stata:复合双引号在编程中的应用

文摘   教育   2024-10-07 22:01   中国  

👇 连享会 · 推文导航 | www.lianxh.cn

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

 课程特色 · 2024机器学习与因果推断

  • 懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。
  • 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。 


作者:王舒瑶 (吉林大学)
邮箱:378807478@qq.com


目录

  • 1. 简介

  • 2. 何时需要使用复合双引号

  • 3. 相关推文



温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


1. 简介

在开始介绍双引号和复合双引号之前,我们先来认识一下暂元的引号使用。暂元的左右引号是由键盘上不同的键打出来的。其中,左边为 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编程」。

2. 何时需要使用复合双引号

通常我们在遇到下列情形时会需要使用引号:显示着重论述的字符串,显示特殊字符串,表示引用的字符串。关于引号的更多介绍,详见「引号的用法及举例」。当引号里面还有引号时,对于外面的那层引号,我们就需要使用复合双引号,从而让 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"

3. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 暂元 编程, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:计量专题
    • Stata:事件研究法的编程实现
  • 专题:Stata教程
    • Stata编程:暂元,local!暂元,local!
    • 普林斯顿Stata教程(三) - Stata编程
  • 专题:Stata绘图
    • Stata绘图:用暂元统一改变图形中的字号
  • 专题:Stata程序
    • Stata小白编程:暂元及macrolists命令
    • Stata小白编程:步步为营-以阶乘计算为例
    • Stata程序:暂元-(local)-和全局暂元-(global)

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。

连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
 最新文章