这是教对象Stata系列视频的配套代码。对应视频与笔记链接请见下方链接,配套代码请见分割线下方。

视频合集

bilibili视频链接

配套笔记链接


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* Do File Note:
日期:2023年1月29日
系列:教对象Stata系列
主题:长宽数据转换
内容:1. reshape 命令: 简单与综合案例
2. 其他命令: tidy 包提供的 gather、spread 命令。 */


cd "C:/Users/wugan/Desktop/教对象Stata系列/第4课:数据管理-长宽数据转换/示范数据"

******************************* 一、reshape 命令 *******************************
* 相关命令: reshape
* 相关链接: 「Stata:使用reshape实现长宽数据转换」https://fgzfgz.github.io/posts/2262/

** 1. 简单案例
// wide --> long
use "wide_data", clear
reshape long x, i(id) j(list)
drop if x==.
save "long_data", replace
// long --> wide
use "long_data", clear
reshape wide x, i(id) j(list)
save "wide_data", replace

** 2. wide --> long
* 内容: 将2018年CGSS的家庭成员表(A1表)转化为独立的成员数据
use "中国综合社会调查/CGSS2018", clear
** 2.1 保留需要转换的变量: 性别、年龄、是否同吃同住、是否经济独立、婚姻状况、与受访人关系
keep id token provinces type a00 a0102* a0103* a0104* a0105* a0106* a010601*
drop a0106022-a01061414 // 删除家庭成员关系变量
** 2.2 宽数据 --> 长数据
reshape long a0102 a0103 a0104 a0105 a0106 a010601, i(id) j(PID)
** 2.3 定义变量标签
label var a0102 "性别"
label var a0103 "年龄"
label var a0104 "是否同吃同住"
label var a0105 "是否经济独立"
label var a0106 "婚姻状况"
label var a010601 "与受访人关系"
** 2.4 删除无效样本
drop if a0102==.
** 2.5 计算相关指标
/* */
** 2.6 保存数据
save "中国综合社会调查/CGSS_person_2018", replace

** 3. long --> wide
* 内容: 将2018年CLDS的劳动力养老保险情况转化为家庭层面宽数据
use "中国劳动力动态调查/2018个体问卷", clear
keep FID2018 I1_20_* // 个人编码问题
** 3.1 生成户内成员顺序码
egen PID=seq(),to(1000) by(FID2018)
** 3.2 调整成员顺序码
tostring PID, replace
replace PID="_"+PID
** 3.3 长数据 --> 宽数据
reshape wide *, i(FID2018) j(PID) // 问题1: PID是字符型变量, 应当使用选项string
reshape wide *, i(FID2018) j(PID) string // 问题2: 需要指明具体变量, 不能使用通配符
reshape wide I1_20_1 I1_20_2 I1_20_3 I1_20_4 I1_20_50 I1_20_5 I1_20_6 I1_20_7, i(FID2018) j(PID) string
** 3.4 保存数据
save "中国劳动力动态调查/2018个体养老保险(wide)", replace


********************************* 二、其他命令 *********************************
* 相关命令: gather、spread
* 相关链接: 「长宽数据转换:gather 与 spread」https://zhuanlan.zhihu.com/p/535622840

** 1. 安装 tidy: 仅首次使用需要安装
ssc install tidy, replace

** 2. gather: wide --> long
sysuse educ99gdp.dta, clear // 发达国家教育经费占GDP比重数据
gather public private, variable(sector) value(edu)

** 3. spread: long --> wide
spread sector edu