pandas读sas数据转csv
1999年以后的nhanes数据都是以xpt文件格式发布的,而更早的数据有很多是以dat原始数据格式发布,需要将原始数据转为数据表以做进一步统计分析。
以 NHANES III 为例,其中有一个数据Household Youth File
,包含3个数据文件youth.dat
, youth.sas
, YOUTH-acc.pdf
。YOUTH-acc.pdf
是这个数据的概述报告,可以从这个文件找到数据的概况信息,比如样本数量,以及一些代码的含义,比如DMARACER
这个变量标识种族,在原始数据中的位置是13
,只有1个字符,就是用代码来表示不同种族的:1
表示’White’, 2
表示’Black’, 3
表示’Other’, 8
表示’Mexican-American of unknown race’。youth.sas
是数据解析的重点,这个文件描述了原始数据的格式,这是一个文本文件,内容为:
1 | FILENAME YOUTH "D:\Questionnaire\DAT\YOUTH.DAT" LRECL=2103; |
可见每一个区段是用区段名
和;
包裹的,我们可以根据INPUT
段的内容对原始数据进行处理。youth.dat
就是原始数据文件。
定义一个sas解析函数:
1 | # 定义工具函数,解析 sas 文件数据格式 |
运行一下:
1 | sas_file_name = 'nhanes3/youth.sas' |
输出为:
1 | {'SEQN': {'start': 0, 'end': 5}, |
再定义一个转为pandas数据帧并存为csv的函数:
1 | import pandas as pd |
运行一下:
1 | # 将 dat 文件转存为 csv 文件 |
输出为: