做学术研究的人特别是社科、公卫、经济方向只要涉及老龄化、健康、养老、劳动这些话题CHARLS基本是绕不开的一个数据库。它是国内目前做得最扎实的中老年人追踪调查从2011年基线调查开始之后每两年追访一次积累了多轮面板数据。但下载这个环节说实话比想象中折腾人。我第一次用的时候光注册申请就卡了三天下载完又因为文件格式不对、变量说明找不到、合并数据时样本量对不上前前后后浪费了小半个月。这篇博文按2023年实际操作时的最新版流程来写从注册、填申请、等审核、下载、解压到用Stata或R把数据读出来每一步该怎么做、坑在哪一次讲清楚。这篇内容适合谁看准备用CHARLS写毕业论文的本硕博学生刚开始接触微观调查数据的年轻老师以及做政策研究需要自己分析数据的人。如果你还没下载过CHARLS或者下载了但打不开、不会合并且不知道怎么处理数据文件这篇就是给你准备的。1. 下载前必须弄清楚的几件事1.1 CHARLS到底是个什么数据库CHARLS全称是中国健康与养老追踪调查英文是China Health and Retirement Longitudinal Study由北京大学国家发展研究院主导全国范围内随机抽取了大约1.9万名45岁及以上的中老年人及其家庭进行长期追踪目标是研究人口老龄化背景下健康、医疗、收入、养老、家庭等各方面的情况。这和平时我们听说的“数据库”不太一样。它不是像MySQL、Oracle那种用来存业务数据的系统也不是已经处理成Excel表能直接用的数据集它更像一堆问卷数据的原始素材库数据以Stata格式为主需要你自己做清洗、编码和处理。很多人第一次接触这个数据库时会不适应以为下载完就有现成的分析结果结果打开一看全是变量代码和缺失值直接懵了。顺着这个理解往下走你会发现CHARLS的核心价值在于“追踪”两个字。同样一批人2011年问过一遍2013年、2015年、2018年、2020年又回来反复访问他们的健康、收入、养老状况。有了这种跨年度的个人数据才可以做面板分析才能观察到个体层面的变化这是横截面调查做不到的。如果你的研究涉及“变化”“影响”“因果推断”这类问题CHARLS是很好的数据基础。1.2 下载前需要准备好的材料和环境在打开官网注册之前先把下面这些准备好不然注册到一半会卡住一个自己常用、能正常收发国际邮件的邮箱。建议用学校或单位的edu邮箱或者Gmail、Outlook这类比较稳定的邮箱。我遇到过用QQ邮箱收不到激活邮件的案例也不排除是当时延迟但为了省事直接用单位邮箱最稳。你的身份信息。注册时一般要填姓名、单位、职称或学生身份信息要真实因为后面填研究计划的时候这些信息会被审核员看到。一个可以长期保存数据的硬盘或网盘。CHARLS原始数据解压后好几个GB而且后续清洗生成的中间文件会越来越多建议提前留出至少10GB空间。Stata或者R环境。数据文件主要是.dta格式Stata当然最亲用R的话提前装好haven包如果只会Python也可以用pandas加pyreadstat读虽然能读但体验上不如前两个顺手。压缩软件。官方下载下来的文件很多是分卷压缩包Windows系统用7-Zip比系统自带的解压功能稳至少遇到乱码文件名的时候不会直接报错。这些准备大概花半小时就能弄好。别嫌麻烦我见过太多人注册完之后下载了半天才发现电脑装不了解压工具或者R语言环境都没有转而去问别人要数据这其实给自己埋了很多不必要的坑。2. 注册与申请审核最容易卡住的三个环节2.1 注册流程详解打开CHARLS官网可以在首页找到“数据”栏目点进去会看到“数据下载”或“用户注册”入口。2023年的界面比早几年简洁了一些但整体逻辑没变。注册的时候需要填写邮箱、姓名、单位等信息设置密码后系统会往邮箱里发一封验证邮件点击邮件里的链接激活账号注册就算完成了。这里有个细节激活邮件偶尔会被邮箱服务商判为垃圾邮件。如果你在收件箱里找不到一定要去垃圾箱里翻一下。我自己的经验是用单位邮箱基本几分钟就能收到用个人免费邮箱有时候会延迟一两个小时激活链接本身有时效过期了就在官网重新触发一次。很多人卡在“收不到邮件”这一步其实不是系统的问题是邮件被隔离了。注册完成后暂时还不能下载数据。CHARLS的用户体系里新注册账号默认是没有下载权限的需要单独提交数据使用申请审核通过后权限才会开放。我第一次注册的时候就以为注册完可以直接下结果在下载页面点半天一直提示没有权限后来才发现还有一道申请流程。2.2 研究计划撰写技巧别写空话申请下载数据时需要填写研究计划或数据用途说明。审核人员会根据你填的内容来判断这个数据能不能给你用主要看两点用途是否合规方案是否具体。合规性指的是不能用于商业用途不能尝试识别个体身份不能以任何方式泄露被访者隐私。具体性指的是你的研究方向、要用的变量、分析思路要写清楚。很多人栽在研究计划写得太空洞。我第一次申请时只写了一句“用于毕业论文”结果等了几天收到邮件说研究计划不够详细需要补充后重新提交。第二次我换了个写法明确说明研究的因变量是什么核心解释变量是什么使用哪几轮数据用什么方法是否需要社区层面的信息。结果当天就通过了审核。这里给一个通用的撰写模板你可以根据自己的研究方向改本人拟利用CHARLS数据库2011-2020年数据研究老龄化/慢性病/劳动供给/养老保障等主题对结果变量的影响。计划采用面板固定效应模型/Logit模型/工具变量法关键变量包括自评健康、日常生活活动能力、家庭收入、医疗保险类型等。需要用到家庭问卷和个人问卷中的相关模块以及社区问卷掌握地区背景信息。本研究仅用于学术论文撰写不涉及任何商业用途并承诺不尝试识别任何受访者个人身份信息。把研究计划写清楚对你没有坏处。审核通过的概率会大幅提高而且写计划本身也是在逼自己把研究问题想清楚后面分析数据时你会感谢这个环节。2.3 审核周期与后续跟进审核周期通常是1-3个工作日遇到节假日或申请高峰期可能会慢一点。提交申请后建议每天都关注一下注册邮箱。审核通过以后系统会发一封通知邮件说明下载权限已开通有时候邮件里会附带数据使用协议的提醒需要你确认同意之后才能开始下载。如果超过一周还没动静可以去官网找数据服务邮箱发一封礼貌的询问邮件写明注册账号、申请提交时间一般很快会有人回复。这里提醒一句不要重复提交多个申请不用来回催促因为后台是人工审核一个账号对应一个申请多提交反而容易被标记为异常。审核通过这件事说难不难说简单也不简单。核心就一条让审核员在最短的时间内判断你是合理合规的学术使用者。3. 数据下载实操从登录到拿到文件的完整路径3.1 登录后台与数据模块认知用激活后的账号登录官网进入数据下载页面后你会看到按调查年度组织的多个数据模块。以2023年最常见的下载列表来说主要包括2011年基线调查数据、2013年追访数据、2015年追访数据、2018年追访数据、2020年追访数据有些年份还附带有生物样本指标、死亡信息等补充模块。很多人点进去之后不知道选哪个。这里给个建议第一次下载时不要贪多先确定自己的研究需要哪几轮数据按年份逐一去下。不要一下子把五个年份的数据全部点一遍因为每个年份的数据包都很大下载到一半网络中断又重新来心态会崩。每个调查年度的数据包里文件也不是一个而是分模块的。最核心的是家庭问卷数据、个人问卷数据、社区问卷数据有的年份还提供编码表、问卷PDF、变量说明文档。家庭问卷和个人问卷之间的关联靠家庭ID、个人ID来匹配社区问卷则对应社区编号后面合并数据时会用到这些ID变量。3.2 分卷压缩包与解压技巧点击下载之后你会发现给到的是一个或多个压缩包而且经常是“part1、part2、part3”这种分卷压缩的形式。这和处理业务数据不一样分卷压缩是为了把大文件拆小方便传输。如果你只把其中一个分卷下载下来解压系统会提示文件损坏或缺少下一个卷这时候需要把所有分卷放到同一个文件夹里再对第一个分卷执行解压。解压工具有讲究Windows系统建议用7-Zip。我试过直接双击分卷用Windows自带解压工具有些文件因为文件名是中文或者特殊字符会提示“没有权限”或路径过长7-Zip基本没这些毛病。macOS用户推荐用The Unarchiver对中文压缩包兼容性好一些。解压后你会看到一堆.dta文件和一些.pdf文档。注意官方有时会在压缩包内附带一个readme.txt里面写明了数据版本说明、引用规范、使用限制和人名ID脱敏规则一定要完整读一遍。我见过有人直接忽略这个文件结果论文里引用了错误的数据版本最后被审稿人质疑非常尴尬。3.3 文件命名规律与软件选择CHARLS的数据文件命名有一定规律比如很多个人数据文件名会包含年份和模块名像“Demographic”“Health”“Work”“Income”“Family”这些关键词。不同年份的文件命名并不完全统一2011年和2013年的文件可能就是一个简单的主文件名到2015年以后模块划分更细文件名就变长了。不要靠记忆猜每次下载后把解压出来的PDF变量说明和文件名对一遍。如果电脑里装的有Stata直接用Stata打开.dta文件最舒服。用R的话推荐用haven包的read_dta()函数它能读取Stata格式的数据和标签方便后面用tidyverse做清洗。Python用户也可以用pandas.read_stata()但个人体验是标签处理不如Stata原生态。SPSS用户如果想用CHARLS需要先用Stata或R把数据转成sav格式不建议直接在SPSS里操作原始dta。4. 拿到数据后的第一件要事读取、核对与合并4.1 用Stata/R读取数据避免中文乱码解压出来的dta文件第一件事不是着急跑回归而是先把数据读取进来确认行列数、变量数和缺失情况。以2011年家庭问卷数据为例在Stata里执行use H2011.dta, clear describe codebookdescribe显示变量的格式和标签codebook可以看到每个变量的取值分布、缺失值数量这样你就知道哪些变量适合直接做分析哪些需要重新编码。如果是R用library(haven) h2011 - read_dta(H2011.dta) library(dplyr) glimpse(h2011)部分早期年份的数据存在中文标签在R里会显示出乱码这是因为原始文件用了非UTF-8编码haven包默认按平台编码读取。解决办法很简单在read_dta()或read_stata()函数里加上encoding参数比如read_dta(..., encoding GB18030)中文标签基本就能正常显示。这个坑非常隐蔽我早期用R读数据时被乱码困扰了很多天后来才发现是编码问题。4.2 变量说明与问卷的对应关系CHARLS的变量名不是直观的英文单词很多是一组包含数字的代码比如某道题的编号。你想分析“自评健康”不能直接搜索“health”得去查阅变量说明文档找到对应的变量名。一般解压后的PDF就是变量编码表里面有变量名、变量标签、取值范围和与问卷题目的对应关系。这里有一个实测经验不要把变量说明PDF只放在解压目录里建议单独建立一个“codebook”文件夹把所有年份的问卷PDF和变量说明统一按年份命名保存。因为后面写论文时你需要反复查阅变量定义尤其是不同年份的变量名可能不一致同一个问题在不同轮次里有时被改了变量名如果你的说明文档整理得好能省下大量时间。如果你在下完数据后发现变量名和自己预期的不一样不要硬猜。正确的做法是先看问卷PDF找到你关心的那道题再看变量说明文档中该题的变量名最后去数据里用codebook搜索确认。这一套流程下来变量选错的可能性非常低。4.3 个人、家庭、社区数据怎么合并CHARLS数据的合并是新手最容易翻车的地方。个人数据和家庭数据通过个人ID和家庭ID关联社区数据通过社区编码关联。但不同年份的数据ID规则有细微差别有的年份是单独的个人ID变量有的年份用“社区ID家庭ID成员序号”组合生成唯一ID。所以合并之前首先打开codebook确认当前年份的ID变量名和构成方式。在Stata里合并个人数据和家庭数据的基本逻辑是use individual.dta, clear merge m:1 household_id using household.dta这里的关键是明确主数据和从数据的关系。如果是以个体为分析单位那么个人数据是主数据家庭数据按家庭ID一对一或一对多匹配过来所以写merge m:1表示多个个体对应一个家庭。如果搞反关系会导致样本量暴涨或大量匹配失败。做面板分析时需要用个人ID和年份来识别同一个体在不同轮次的数据。CHARLS追访过程中存在样本流失、新增样本等情况所以不同年份的个体ID不一定完全覆盖合并后注意检查样本量变化不要盲目用平衡面板方法去处理不平衡数据。5. 常见问题速查与避坑经验总结5.1 高频问题对照表问题现象原因处理方法注册后一直没收到激活邮件邮件被拦截或延迟检查垃圾箱用单位邮箱重新发送激活邮件研究计划提示审核不通过计划写得太空缺少关键信息按用途、方法、变量、数据年份模板重写下载页面有权限但点不了数据未阅读并同意数据使用协议仔细阅读协议勾选同意后刷新页面分卷压缩包解压失败分卷未全部下载或文件名不一致把所有分卷放在同一目录用7-Zip解压首个分卷dta文件在R中打开中文乱码早期文件使用国标编码read_dta加上encoding GB18030参数合并数据后样本量暴增merge方向写反或ID变量不唯一先查codebook确认ID规则用merge 1:1或m:1重跑变量找不到搜不到中文关键词变量名为代码编号非直观单词查阅变量说明PDF通过问卷题目反查变量名这张表是我自己踩坑之后整理出来的基本覆盖了90%的入门问题。如果遇到表里没有的情况建议先重新读一遍下载目录下的readme多数问题在官方说明里都有提示。5.2 几个值得记住的实操心得第一个心得研究计划写具体一点对自己有好处。你可能会觉得申请下载一个数据填那么详细的计划很麻烦但实际上写计划的过程也是研究设计的过程。你打算用什么数据、什么变量、什么方法写到这个份上拿到数据后基本可以直接上手不用再花一两个星期摸索。我见过不少同学下载前没有明确的变量表下载后每天翻变量说明效率很低。第二个心得账号和下载的数据别随便共享。CHARLS数据有明确的使用协议只允许注册人用于学术研究。把下载账号借给别人或者把原始数据直接发到群里都属于违规行为。早期有人图方便共享账号结果导致该用户下载权限被限制。老老实实让团队成员自己注册、自己申请流程虽然多了一步但安全性最高。第三个心得下载完成后第一时间校验数据完整性。解压所有压缩包后对照官网说明检查一下每个年份的文件数量和大小。如果发现某个文件缺失只重新下载那一个文件不用整包重下。这一步花十分钟能避免你分析到一半才发现数据不完整然后又要回头补下载的窘境。第四个心得数据文件夹的命名直接影响你半年后的心情。我的习惯是根目录按年份建文件夹里面再分raw、codebook、do和output四个子目录。raw放原始dtacodebook放问卷和变量说明do放Stata命令output放清洗后的数据和分析结果。这个习惯让我在写论文时找文件非常快也方便最后提交复现代码。结语每次带学生上手CHARLS我都会让他们先下载2011年基线数据小样本跑通一遍注册、下载、读取、合并的完整链路再决定后面用哪些年份因为这批数据虽然开放但跨年份的变量规则并不完全统一早一点把数据结构摸清楚后面写论文省下的是好几周时间。最后提醒一个很多人容易忽略的小事官方引用规范里一般要求标注数据版本和获取年份论文投稿前务必把你用的CHARLS版本号核对清楚不要引错版本。按这个流程走一遍注册审核、下载解压、读取合并这些坎儿你基本都能顺利迈过去。