
New! 搜推文,找资料,用
lianxh
命令:
安装:ssc install lianxh, replace
使用:lianxh 合成控制
lianxh DID + 多期, w


作者:郑宇 (南京大学)
邮箱:cn_vip@outlook.com
0. 写在前面
普林斯顿大学荣休人口统计学家赫尔曼·罗德里格斯 (Germán Rodríguez) 在其 个人主页 上汇总整理了其研究生涯积累的 Stata 实操干货。本期是该系列的第二讲:关于 Stata 中数据处理的那些事儿。
温馨提示:本讲中会涉及到很多 Stata 命令,每个命令都附有多个选项。因此,建议各位:
- 看到感兴趣的命令,务必使用
help CmdName
查看其帮助文件,以便快速了解该命令的基本用法和扩展功能。 - 若需进一步了解原理和应用范例,可以使用 Chen and Lian (2024) 新近编写的
ihelp
或wwwhelp
(二者等价) 查看其在线 PDF 手册。安装命令为:
ssc install ihelp, replace // ihelp
net install pr0079, replace // wwwhelp
net get pr0079, replace // appendix and sample dofile
1. Stata 文件
Stata 数据集被构建为一个矩形矩阵,其中包含了 n 条观测值和 m 个变量。区别于那些逐个读取观测值的软件,Stata 的高效之处在于它将全部数据加载到内存中,这是其快速处理数据的关键因素之一。在不同版本的 Stata 中,变量的数量上限也各有不同:Stata/BE 支持最多 2,047 个变量,Stata/SE 可以处理最多 32,767 个变量,而 Stata/MP 的上限则是 120,000 个。
另外,只要计算机内存足够,你可以处理大量的观测值——在 Stata/SE 中达到 20 亿,而在 Stata/MP 中可以处理至多 1 万亿。要了解这些具体的限制信息,你可以查阅 Stata 的在线 PDF 手册 ([R] limits),或者直接在 Stata 的命令窗口中输入 help limits
来获取文本格式的帮助文件,或输入 ihelp limits
来查询 PDF 格式的说明文件。
1.1 变量命名有哪些讲究?
- 变量命名要求精炼:Stata 中变量名最多可以包含 32 个字符,但许多命令在默认情况下只打印 (显示) 12 个字符。同时,较短的变量名也更容易输入。
- Stata 区分大小写:Age 和 age 是不同的变量。
- 建议为变量命名制定一个约定俗成的规则并一以贯之:Germán 教授更喜欢使用单个小写单词或者缩写,而不是多个单词。比方说,他更喜欢使用 effort 或 fpe,而不是 family_planning_effort 或 familyPlanningEffort。
1.2 变量类型
Stata 中变量可以是数值型或字符型数据。其中,数值变量可以存储为整数 (bytes、integers 或 longs) 或浮点数 (float 或 double)。这些类型在可容纳值的范围或精度上有所不同,详情请键入 help datatype
([D] datatype)。
通常情况下,我们不需要关心存储类型。Stata 默认使用 doubles 进行所有计算。而若想节省内存,则可通过压缩命令找到最经济的方式来存储数据集中的每个变量 (输入 help compress
了解更多信息,[D] compress)。
在进行涉及浮点类型的逻辑比较时,必须小心谨慎。如果将 0.1 存储在变量名为 x 的浮点类型中,你可能会惊讶地发现 x == 0.1
从不成立。原因是 0.1 在作为浮点数 (变量 x) 或二进制数 (常数 0.1) 存储时,会被“舍入”为不同的二进制数。但这个问题不会出现在整数或字符串中。
字符串变量可以有不同的长度,在 Stata 12 中最长可以达到 244 个字符,在 Stata 13 或更高版本中最长可以达到 20 亿个字符。可以使用 str1...str2045
定义长达 2045 个字符的固定长度字符串;使用 strL 定义长字符串,适合存储纯文本甚至二进制大型对象,如图像或文字处理文档。详细可以输入 help strings
参考帮助文档 ([D] destring)。
有时,我们可能需要在数值型变量和字符串变量之间进行转换。如果变量被读作字符串,但实际上包含数字,则需要使用命令 destring
或函数 real()
。此外,我们可以使用 encode
命令 ([D] encode) 将字符串数据转换为数值变量,或使用 decode
命令将数值变量转换为字符串。
1.3 缺失值
与其他统计软件一样,Stata 对缺失值亦有所区分。对于数值变量,基本的缺失值由一个点表示。自第八版起,Stata 引入了额外的 26 个缺失值代码,从 .a 到 .z 进行标识。在 Stata 内部,这些特殊的缺失值被编码为极大的数值,确保了它们在数值排序中的位置:valid_numbers < . < .a < ... < .z
。
要检查缺失值,需要写成 var >=
(而不是 var == .
)。Stata 有一个函数 missing(varname)
可以进行这种比较,并提高代码的可读性。例如,作者更喜欢使用 list id if missing(age)
,而不是 list id if age >= .
。
字符串变量的缺失值用 ""
表示,即空字符串;不要与全为空格的字符串 (如" "
) 混淆。
在人口调查数据中,常常用 88 来代表不适用,而用 99 来表示不确定。例如,未婚女性的结婚年龄可能被标记为 88,而那些已婚但未提供结婚年份的女性可能被标记为 99。区分这两种情形通常需要我们采用不同的缺失值代码。若希望将 88 重新编码为 .n
(代表“不适用”),将 99 重新编码为 .m
(代表“缺失”),以下是可以执行的代码:
replace ageAtMar = .n if ageAtMar == 88
replace ageAtMar = .m if ageAtMar == 99
Stata 自带了几十个小型数据文档,输入 sysuse dir
可以获得清单:
. sysuse dir
auto.dta bplong.dta citytemp4.dta
auto16.dta bpwide.dta cnstockincome.dta
auto2.dta cancer.dta ctbc2.dta
autornd.dta census.dta educ99gdp.dta
blp.dta citytemp.dta exdata.dta
gitget.dta lifeexp.dta pjw.dta
github.dta network1.dta pop2000.dta
githubfiles.dta network1a.dta project.dta
gnp96.dta nlsw88.dta sandstone.dta
kountry.dta nlswide1.dta sp500.dta
surface.dta tsline2.dta voter.dta
titanic.dta uslifeexp.dta xtline1.dta
tsline1.dta uslifeexp2.dta
在安装 Stata 时,上述文件被自动存储在 ..\stata\ado\base\[a-z]\ 文件夹下。因此,只需输入 sysuse auto
或 sysuse "auto.dta", clear
(更完整的写法) 即可载入 auto.dta 文件。
2. 将数据读入 Stata
2.1 无固定格式
如果数据变量之间用空格、逗号或制表符分隔,则可以使用 infile
命令。
以计划生育工作的数据集(effort.raw
)为例,这是一个简单的文本文件,其内容被划分为四个字段:第一个字段包含国家名称,其余三个字段包含数值数据,每个字段之间以空格分隔。以下是可以用来在 Stata 中导入这份数据的命令:
. clear
. infile str14 country setting effort change using ///
> "https://grodri.github.io/datasets/effort.raw"
在 infile
命令之后是变量的名称。由于国家名称是字符串而非数字变量,因此我们在名称前加上 str14,将变量类型设置为最多 14 个字符的字符串。所有其他变量都是数字变量,这是默认类型。
在 using
关键字后面指定的是文件名,这个文件可以位于本地或者云端。在本例中,我们将直接从互联网上读取文件。如需了解更多信息,可以参考 Stata 中的 help infile1
命令。
Excel 等电子表格软件导出的数据通常用制表符或逗号分隔,每行只有一个观测值。有时第一行是变量名。如果数据是这种格式,可以使用导入分隔符命令来读取。输入 help import delimited
了解更多信息。
2.2 固定格式
调查数据通常采用固定格式,每个案例有一条或多条记录,每个变量在每条记录中的位置都是固定的。
当面对固定格式的数据时,使用 infix
命令来指定每个变量对应的列位置是一种简便的方法。以 effort.raw 数据为例,由于数据已经被整齐地排列在各个列中,我们可以采用以下方式进行读取:
. infix str country 4-17 setting 23-24 effort 31-32 change 40-41 ///
> using https://grodri.github.io/datasets/effort.raw, clear
这就是说,要从第 4-17 列读取国名,从第 23-24 列读取设置,以此类推。当然,必须读取正确的列。我们指定 country 是一个字符串变量,但并不一定要指定宽度。clear
选项用于覆盖内存中的现有数据集。
如果变量数量较多,应考虑将变量名和位置信息键入一个单独的文件 (称为字典),然后通过 infix
命令调用。试着在名为 effort.dct 的文件中输入以下字典:
local fn "https://grodri.github.io/datasets/effort.raw"
infix dictionary using "`fn'" {
str country 4-17
setting 23-24
effort 31-32
change 40-41
}
注意:字典只接受 /* */ 注释,而且这些注释必须出现在第一行之后。保存文件后,可以使用以下命令读取数据:
infix using effort.dct, clear
所以,与其在字典中指定数据文件的名称,不如将其作为 infix
命令的一个选项,使用 infix using dictionaryfile, using(datafile)
的形式来设定。第一个 using
指定字典,第二个 using
是指定数据文件的选项。当我们想用一个字典读取多个以相同格式存储的数据文件时,这种方法特别有用。更多信息,请参见 help infix
。
infile
命令也可用于固定格式数据和字典。这是一条功能强大的命令,提供了许多 infix
命令无法提供的选项。例如,它可以让你在字典中直接定义变量标签,但语法比较复杂。参见 help infile2
。
有关将数据导入 Stata 的各种方法的详细信息,请参见 help import
。
3. 数据文档
3.1 数据标签和注释
Stata 允许我们使用 label data
命令给数据集加上标签,标签最多可包含 80 个字符。我们还可以使用 notes
命令添加注释,每个注释最多可包含 64K 个字符,后面跟一个冒号,然后是文本。
label data "Family Planning Effort Data"
notes: Source: P.W. Mauldin and B. Berelson (1978). ///
Conditions of fertility decline in developing countries, 1965-75. ///
Studies in Family Planning, 9:89-147
完成上述设定后,你可以使用 save
命令保存数据。之后调入该数据后,可以使用 describe
命令查看上述标签和注释信息。
3.2 变量标签和注释
使用 label variable
命令为变量加上标签。命令后跟变量名称和标签 (引号包围,最多 80k 字符)。使用 infile
命令可以将这些标签添加到字典中,否则,应该准备一个包含所有标签的 do 文件。下面是如何为数据集中的三个变量定义标签:
label variable setting "Social Setting"
label variable effort "Family Planning Effort"
label variable change "Fertility Change"
Stata 还允许使用以下命令为特定变量添加注释 notes varname: text
。请注意,该命令后面是变量名,然后是冒号:
notes change: Percent decline in the crude birth rate (CBR)
- the number of births per thousand population
- between 1965 and 1975.
3.3 数据值标签
我们还可以对分类变量的值进行标记。为此,让我们以 effort 变量为例,并将其值划分为三个不同的类别:0-4,5-14 和 15+。这三个范围分别代表了努力程度的三个层次:弱、中等和强。
generate effortg = effort
recode effortg 0/4=1 5/14=2 15/max=3
label define effortg 1 "Weak" 2 "Moderate" 3 "Strong", replace
label values effortg effortg
label variable effortg "Family Planning Effort (Grouped)"
Stata 采用两步法来定义标签。首先定义一个标签集,使用 label define
命令将整数代码与标签 (最多 80 个字符) 相关联。然后,使用 label values
命令将该组标签与变量相关联。通常,标签集和变量使用相同的名称,就像我们在示例中所做的那样。
这种方法的一个优点是可以为多个变量使用同一组标签。规范的例子是 label define yesno 1 "yes" 0 "no"
,它可以与数据集中的所有 0-1 变量相关联,使用每个变量的形式命令 label values variablename yesno
。定义标签时,如果标签是单个单词,则可以省略引号,但为了清晰起见,我更愿意使用它们。
我们可以使用 add
或者 modify
选项修改标签集,使用 label dir
(仅列出名称) 或 label list
(列出名称和标签) 列出标签集,并使用 label save
将它们保存到一个 do 文件。输入 help label
以了解更多信息。
3.4 多语言标签
一个 Stata 文件可以用多种语言存储标签,并且可以从一组到另一组自由移动。遵循 Stata 建议,使用 ISO 标准的双字母语言代码,en 代表英文,es 代表西班牙语。
首先我们使用 label language
来重命名当前语言为 en,并创建一个新的语言集 es:
label language en, rename
label language es, new
如果现在输入 desc
,你会发现我们的变量没有标签!我们可以使用 copy
选项复制英文标签,但这样做并不省事。下面是西班牙语版本的数据和变量标签:
label data "Datos de Mauldin y Berelson sobre Planificación Familiar"
label variable country "País"
label variable setting "Indice de Desarrollo Social"
label variable effort "Esfuerzo en Planificación Familiar"
label variable effortg "Esfuerzo en Planificación Familiar (Agrupado)"
label variable change "Cambio en la Tasa Bruta de Natalidad (%)"
西班牙语标签定义不会覆盖相应的英文标签,而是并行存在。值标签命名时需小心些,不能直接将标签集取名 effortg。因为 effortg 仅表示变量和标签之间的关联。你需要定义一个新的标签集。我们在此取名 effortg_es,结合旧名称和新语言代码,然后将其与变量 effortg 相关联:
label define effortg_es 1 "Débil" 2 "Moderado" 3 "Fuerte"
label values effortg effortg_es
您可能想要尝试命令 describe
,现在可以尝试用表格输出:
table effortg
接下来,我们将语言改回英文并再次运行表格:
label language en
table effortg
更多信息,请键入 help label_language
([D] label_language)。
4. 创建新变量
Stata 创建新变量最重要的命令是 generate/replace
和 recode
,他们经常一起使用。
4.1 生成和替换
generate
命令使用表达式创建新变量,表达式可以结合常量、变量、函数、算术运算符和逻辑运算符。让我们从一个简单的例子开始。下面是如何创建一个新的变量 (设置的平方):
gen settingsq = setting^2.
如果你打算在回归中使用这个项,而且知道线性和二次项是高度相关的。那么在平方之前将变量中心化可能是个好主意。这里我们运行 summarize
,并使用 quietly
来抑制输出,从存储结果中获取均值 r(mean)
:
quietly summarize setting
gen settingcsq = (setting - r(mean))^2
请注意,我为此变量使用了不同的名称。Stata 不会让你用 generate
来覆盖现有的变量。如果你真的想替换旧变量的值使用 replace
。你也可以使用 drop var_names
从数据集中删除一个或多个变量。
4.2 运算符和表达式
下表列出了可以在表达式中使用的标准算术运算符、逻辑运算符和关系运算符:
Arithmetic | Logical | Relational |
---|---|---|
+ add |
! not (also | equal |
- subtract |
| or | != not equal (also |
* multiply |
& and | less than |
/ divide |
less than or equal | |
^ raise to power |
greater than | |
+ string concatenation |
greater than or equal |
下面是如何为拥有高努力项目的国家创建一个指示变量 (高=1,否则=0):
generate hieffort1 = effort > 14
这是 Stata 中常见的习语,利用了逻辑表达式为真时取值 1,为假时取值 0 的特性。另一种常见的写法是:
generate hieffort2 = 0
replace hieffort2 = 1 if effort > 14
这两种策略的效果一样。但是,如果存在缺失值,这两种策略都会出错。因为缺失值的编码是非常大的值,缺失值会被编码为高努力值。所以,我们应该养成避免进行开放式比较的好习惯。首选方法是使用:
generate hieffort = effort > 14 if !missing(effort)
这样,当努力大于 14 时,结果为 true;当努力小于或等于 14 时,结果为 false;当努力缺失时,结果为 missing。逻辑表达式可以用 & 表示“和”,用 | 表示“或”。下面是如何为 5 到 14 之间的努力创建一个指示变量:
gen effort5to14 = (effort >=5 & effort <= 14)
在这里,我们不需要担心缺失值,它们已被条件语句 effort <= 14
排除在外。
4.3 函数
Stata 有大量的函数,这里有一些常用的数学函数,输入 help mathfun
可以查看完整列表:
Function | Descriptions |
---|---|
the absolute value of | |
the exponential function of | |
the integer obtained by truncating towards zero | |
or | the natural logarithm of if |
the log base 10 of (for ) | |
logit(x) | the log of the odds for probability |
the maximum of , ignoring missing values | |
the minimum of , ignoring missing values | |
round | rounded to the nearest whole number |
the square root of if |
当参数是数据集中的变量时,这些函数会自动应用于所有观察值。事实上,Stata 提供了大量常用函数 ([FN] functions),包括:
- 用于生成服从特定分布的随机数 (用于模拟) 的函数,如
runiform()
,rnormal()
等。详情参见 [FN] random number functions。 - 用于计算概率分布 ( 值需要) 及其逆运算 (临界值需要),包括计算正态累计标准正态分布的
normal()
及其逆运算的invnormal()
,更多信息参见help density functions
([FN] density functions)。
要模拟正态分布的观测值,可以使用:
rnormal() // or invnormal(uniform())
还有一些专门的函数用于处理字符串,请参阅 help string functions
。处理日期函数,请参阅 help date functions
。
4.4 重新编码变量
recode
可以将「(连续取值的) 数字变量」转化为「类别变量」。例如,假设一项生育率调查中对年龄在 15 岁至 49 岁的女性进行单身年龄分析,想以 5 年为一个区间对样本分组,可以使用命令:
gen age5 = int((age-15)/5)+1 if !missing(age)
但这只适用于有规律的间隔规则的情况。也可以用如下方法:
recode age (15/19=1) (20/24=2) (25/29=3) (30/34=4) ///
(35/39=5) (40/44=6) (45/49=7), gen(age5)
括号中的每个表达式都是一条重新编码规则:等号 (=
) 左边是原变量的取值列表或取值范围;等号右边用于指定这些数值在新变量中的取值 (value)。事实上,这些编码规则都可以视为简写的条件语句,例如 recode age (15/19=1) (20/24=2) ..., gen(age5)
等价于:
gen age5 = .
replace age5 = 1 if (age>=15) & (age<=19)
replace age5 = 2 if (age>=20) & (age<=24)
...
由此看来,recode
命令采用更为简洁的方式实现了对现有变量重新编码的功能。因此,表达式 (15/19=1)
也可以理解为一个条件赋值语句,即把满足等号左侧条件的观察值重新赋值为等号右侧的数值。
使用斜线指定的范围包括两个边界,因此 15/19 是 15 到 19,也可以指定为 15 16 17 18 19
或 15 16 17/19
。另外,可以使用 min
表示最小值,max
表示最大值,如 min/19
和 44/max
。当规则的形式为 range=value
时,可以省略括号,但添加括号通常有助于提高可读性。
值会被分配到其所属的第一个类别。从未分配给某个类别的值将保持原样。可以使用 else
(或 *
) 作为最后一个子句来指代任何尚未分配的值。另外,也可以使用 missing
和 nonmissing
来指代未分配的缺失值和非缺失值;这两个子句必须是最后两个子句,且不能与 else
结合使用。
在上例中,我们还使用 gen()
选项生成了一个新变量,在本例中是 age5;默认情况下是替换现有变量的值。作者强烈建议我们始终使用 gen
选项,或者在重新编码前使用 clonevar
命令对原始变量进行备份。
我们也可以在每条重新编码规则中指定值标签 (value label)。这比在单独语句中创建标签更简单,也能更直观地体现数值 (value) 和标签 (label) 之间的对应关系。通过选项 label(label_name)
,可以为创建的标签指定一个名称 (默认与变量名相同)。下面的示例展示了如何一步完成对计划生育工作的重新编码和标注。
recode effort (0/4=1 Weak) (5/14=2 Moderate) (15/max=3 Strong), ///
generate(efffortg) label(effortg)
5. 管理 Stata 文件
一旦创建了 Stata 系统文件,就需要保存文件,即 save filename, replace
。其中 replace
选项只有在文件已经存在的情况下才需要使用。如要加载在上一次会话中保存的 Stata 文件,可以使用 use filename
命令。
如果在保存的文件中存在不需要的临时变量,可以使用 drop varnames
命令 (在保存前) 将其删除。或者,也可以使用 keep varnames
命令指定要保留的变量。对于大文件,你可能希望在保存前对其进行压缩,compress
命令会查看数据,并将每个变量保存为不会导致精度下降的最小数据类型。
可以在 Stata 文件中添加变量或观测值。要添加变量,需要使用合并 (merge
) 命令,这需要两个 (或更多) Stata 文件,通常要有一个共同的 id,这样观测值才能正确配对。一个典型的应用是在单个数据文件中添加家庭信息。输入 help merge
了解更多信息。
要向文件中添加观测值,需要使用 append
命令,这就要求要添加的数据位于一个 Stata 文件中,通常包含与内存中数据集相同的变量。例如,您可能有一个诊所的病人数据,可能想添加另一个诊所的类似数据。输入 help append
了解更多信息。
一个相关但更专业的命令是 joinby
,它可以将内存中的观测值与外部数据集中的观测值进行配对组合 (另见cross
)。
6. 数据框
Stata 16 引入了框架 (frames
) 功能,允许同时在内存中保存多个数据集。考虑这样一种情况:我们有 F1_家庭数据.dta 和 F2_个人数据.dta 两份数据文件,二者到包含变量家庭 ID。我们需要 F1 和 F2 合并起来才能获得实证分析中的所有变量信息。
简单来讲,16.0 以前,Stata 内存在存储数据时用的是「平房」,因此内存中只能每次读入一份数据文件;而在引入数据框后,则开始采用「楼房」存储数据,不同的数据集可以读入不同的「楼层」,使得内存中可以同时读入多份数据。
在 Stata 16.0 以前,需要用 merge
命令合并这些文件。从 Stata 16 开始,则可以将两个数据集存储为 frames
,并将家庭数据链接到每个人。Stata 18 允许将一组 frames
保存在一个扩展名为 .dtas
的文件中,.dtas
是 .dta
的复数。然后,可以使用该文件将框架集加载到内存中。
frames
的应用还有很多,请输入 help frames
([D] frames) 了解更多信息。亦可参阅如下推文:
- 徐嘉树, 2021, Stata:如何同时对多个数据框操作-frame, No.755.
- 郭盼亭, 2023, Stata:数据框纵向追加-append-fframeappend, No.1231.
- 陈卓然, 2022, Stata数据处理:数据框使用教程, No.976.
7. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh stata + 数据处理, m
安装最新版lianxh
命令:
ssc install lianxh, replace
- 谢作翰, 2019, 普林斯顿Stata教程(三) - Stata编程, No.2.
- 谢作翰, 2019, 普林斯顿Stata教程(二) - Stata绘图, No.78.
- 谢作翰, 连玉君, 2019, 普林斯顿Stata教程(一) - Stata数据处理, No.152.
- 丁晨, 2021, Stata数据处理:通过API获取经济数据, No.596.
- 严子凯, 2020, 滚动吧统计量!Stata数据处理, No.139.
- 何庆红, 2020, Stata数据处理:纵横长宽转换-reshape命令一文读懂! (上) , No.1001.
- 侯新烁, 2020, Stata数据处理:用-astile-快速创建分组, No.324.
- 侯新烁, 2020, Stata数据处理:用-efolder-快速生成文件夹和子文件夹, No.325.
- 冯超楠, 2022, Stata数据处理:模糊匹配-reclink2-matchit-strgroup, No.1061.
- 刘亮, 2020, Stata: 约翰霍普金斯大学 COVID-19 疫情数据处理及可视化, No.107.
- 刘梓茵, 2023, Stata数据处理:缺失值类型及应对方法, No.1196.
- 刘欣妍, 2020, Stata数据处理:各种求和方式一览, No.451.
- 刘欣妍, 2020, Stata:如何保留时间连续的样本, No.459.
- 刘欣妍, 2020, Stata:数据合并与匹配-merge-reclink, No.461.
- 初虹, 2022, Stata数据处理:一文搞定CEIC数据库, No.923.
- 初虹, 2022, Stata数据处理:快来更新你的Stata-Workflow, No.895.
- 初虹, 2022, Stata数据处理:清洗中国城市建设统计年鉴, No.889.
- 华晨, 2020, Stata数据处理:纵横长宽转换-reshape的兄弟-gather和spread.md, No.1002.
- 史柯, 2022, Stata:时间序列数据转换-tstransform, No.941.
- 吴雄, 2020, Stata数据处理:xtbalance-非平衡面板之转换, No.316.
- 周小强, 2022, Stata数据处理:一月有几周?月度和周数据转换, No.936.
- 唐林, 2023, Stata数据处理:清除命令介绍和对比-clear-drop-discard, No.1246.
- 夏书浩, 2021, Stata:让缺失值一览无余, No.607.
- 孟佳音, 2021, Stata数据处理:缺失值与多重补漏分析 (一) , No.693.
- 孟佳音, 2021, Stata数据处理:缺失值与多重补漏分析 (三) , No.695.
- 孟佳音, 2021, Stata数据处理:缺失值与多重补漏分析 (二) , No.694.
- 展一帆, 2020, Stata数据处理:条件函数知多少?, No.483.
- 展金永, 2020, Stata新命令-tobalance:非平行面板转换为平行面板数据, No.281.
- 左祥太, 2021, Stata数据处理:快速合并与编码-encodefrom, No.767.
- 巴宁, 2021, Stata 数据处理:iefieldkit 命令介绍, No.758.
- 廖俊超, 2020, Stata数据处理:FRED数据导入问题的解决方案, No.313.
- 徐嘉树, 2021, Stata:如何同时对多个数据框操作-frame, No.755.


资源共享
- 连享会资料 ……
- 在线视频:lianxh-class.cn
- Stata 33 讲,100 万+ 播放,Stata 入门必备,公开课
- 直击面板数据模型,10 万+ 播放,白话面板模型,公开课
- … more …
- 论文复现和数据
- 主题分类
- 热门推文

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

关于我们
- Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。more……
- 扫码加入连享会微信群,提问交流更方便
