NHANES数据库数据下载

今天跟大家分享一下如何用R包nhanesA下载NHANES数据

以一个简单的研究目的为例:使用NHANES数据库中的数据构建一个舒张压的预测模型。
根据该研究目的,整理纳入分析的周期和变量:
①研究周期:2013-2014年;
②因变量:舒张压;
③自变量:性别、年龄、种族、婚姻状态、收缩压、吸烟和饮酒;
④抽样调查相关信息:weightsstratapsu(这部分数据比较特殊,至于为什么要下载这些数据,下一篇推文跟大家介绍权重的时候再详细说)。

目录:

  1. NHANES数据库数据存储结构
  2. 下载与加载包
  3. 查询指定年份和指定分类中的表格
  4. 查找表格中包含的字段
  5. 下载数据
  6. 选择相应变量
  7. 翻译分类变量
  8. 下载EXAM分类中分数据
  9. 下载存放表格未知的变量
  10. 连表

1. NHANES数据库数据存储结构

NHANES数据库的数据主要分为五个公开数据类别和一个受限访问数据,其中五个公开数据类别分别为:

  • DEMO:人口统计学
  • DIET: 饮食
  • EXAM: 检查
  • LAB: 实验室指标
  • Q: 问卷调查

为了方便大家理解,我们绘制了一张NHANES数据存储结构脑图

2. 下载与加载包

install.packages("nhanesA")
install.packages("knitr")
install.packages("tidyverse")
install.packages("plyr")
library(nhanesA)
library(knitr)
library(tidyverse)
library(plyr)

3. 查询指定年份和指定分类中的表格

nhanesTables()方法可查看5个分类中各有哪些表格,以2013-2014年的人口统计学资料为例:

# data_group=DEMO/DIET/EXAM/LAB/Q, year写入一个周期中的奇数年份即可
nhanesTables(data_group = 'DEMO', year = 2013)


可以看到2013年的人口统计学资料表叫做DEMO_H,其中H代表2013年的索引,若查询的是2015年的人口统计学资料,便是DEMO_I

4. 查找表格中包含的字段

我们知道了2013年的人口统计学资料表叫做DEMO_H后,可以用以下代码查询该表格中包含了哪些字段,以及每个字段的描述

kable(nhanesTableVars(data_group = 'DEMO', nh_table = 'DEMO_H', namesonly = FALSE))

我们用同样的方式观察一下血压所在表BPX_H中相关字段与描述

kable(nhanesTableVars(data_group = 'EXAM', nh_table = 'BPX_H', namesonly = FALSE))

如果想要对表和字段有更深的了解,我们可以用以下代码,跳转到NHANES官网,查看表和字段的说明

browseNHANES(data_group = 'EXAM', nh_table = 'BPX_H')

5.下载人口统计学数据

用nhanes方法可直接在R中下载指标表格

demo <- nhanes('DEMO_H')

下载时如果出错,多重试几次,如果重试多次还是下载不了,也可以把官方的XPT文件下载到本地,然后用以下代码加载(这里以2013-2014的DEMO_H为例)

library(haven)
demo <- read_xpt(file ='DEMO_H.xpt')

6. 选择相应变量下载完成后,我们根据研究目的选择变量。

本案例需要的性别、年龄、种族、婚姻状态以及weightsstratapsu都是在人口统计资料中,用以下代码从demo中选择这些变量

demo1 <- demo %>% select(SEQN, # 序列号
RIAGENDR, # 性别
RIDAGEYR, # 年龄
RIDRETH3, # 种族
DMDMARTL, # 婚姻状况
WTINT2YR,WTMEC2YR, # 权重
SDMVPSU, # psu
SDMVSTRA) # strata

7.翻译分类变量

直接下载下来的分类变量是以1、2等数字表示,如上图中的性别和种族等,用以下代码,将数字翻译成其所代表的含义

demo_vars <- names(demo1)
demo2 <- nhanesTranslate('DEMO_H', demo_vars, data=demo1)

在翻译过程中,可能会出现如下图所示警告,这是由于有些字段不是分类变量,不需要翻译,所以我们可以忽略这个警告

最后翻译完成的数据,如下图所示

8. 下载EXAM分类中的数据

其中收缩压和舒张压数据位于BPX_H表格中

bpx <- nhanes('BPX_H')
bpx1 <- bpx %>% select(SEQN, # 序列号
BPXDI1, # 舒张压
BPXSY1) # 收缩压

9. 下载存放表格未知的变量

对于一些不知道在哪个表格里的变量,可以在官网进行关键词搜索,链接如下

https://wwwn.cdc.gov/nchs/nhanes/search/default.aspx

以吸烟数据为例

可以看到有很多不同的数据集都包含了吸烟信息

然后我们根据描述,选取适合我们研究目的的变量,我们这里选择SMQ040: "你现在是否吸烟?"(也可以通过查看详细描述后再选择更加适合自己研究目的的变量)

图片

进入2013-2014 Questionnaire页面后,我们会看到Q分类下所有的表格,再找到我们所需要的SMQ040字段所在的表SMQ_H,点击SMQ_H DOC可以查看该表格以及表中字段的具体信息

查到吸烟数据对应的表格和字段后,用以下代码下载表格并选取字段

smq <-  nhanes('SMQ_H')
smq1 <- smq %>% select(SEQN, # 序列号
SMQ040) # 你现在吸烟吗?

# 用同样的方式查询并下载饮酒数据
alq <- nhanes('ALQ_H')
alq1 <- alq %>% select(SEQN, # 序列号
ALQ130) # 过去12个月每天饮酒量

10. 连表

此时我们有了以下4个表

  • 人口统计学资料表:demo2

  • 血压数据表:bpx1

  • 吸烟数据表:smq1

  • 饮酒数据表:alq1

根据序列号‘SEQN’将4个表连接成一个表,用来进行后续的分析(SEQN是NHANES数据库中被调查者的唯一标识)

# 方式1:逐张连表
data <- demo2 %>% full_join(bpx1, by = 'SEQN') %>% full_join(alq1, by = 'SEQN')
# 方式2:全部连表
data <- join_all(list(demo2, bpx1, alq1, smq1), by = 'SEQN', type = 'full')

至此生成的data就是研究目的所需要的所有数据了

需要注意的是由于NHANES中数据抽样方法的复杂性,这份数据不能够直接利用传统的统计方法进行分析。至于如何正确分析,我们将在后续的推文中跟大家介绍!

统计合作与交流欢迎私信我们~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容