NHANES数据库数据下载

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

以一个简单的研究目的为例:使用NHANES数据库中的数据构建一个舒张压的预测模型。

根据该研究目的,整理纳入分析的周期和变量:

①研究周期:2013-2014年;

②因变量:舒张压;

③自变量:性别、年龄、种族、婚姻状态、收缩压、吸烟和饮酒;

④抽样调查相关信息:weights、strata、psu(这部分数据比较特殊,至于为什么要下载这些数据,下一篇推文跟大家介绍权重的时候再详细说)。


目录

 0、NHANES数据库数据存储结构

1、 下载与加载包 

2、查询指定年份和指定分类中的表格

3、 查找表格中包含的字段

4、下载数据

5、选择相应变量

6、翻译分类变量

 7、下载EXAM分类中的数据

8、下载存放表格未知的变量

 9、 连表


0、NHANES数据库数据存储结构

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

  • DEMO:人口统计学

  • DIET: 饮食

  • EXAM: 检查  

  • LAB: 实验室指标

  • Q: 问卷调查

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

图片

1、 下载与加载包 

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

2、查询指定年份和指定分类中的表格

 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

3、 查找表格中包含的字段

我们知道了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')

图片

4、下载数据

nhanes()方法可直接在R中下载指定表格(这里以人口统计学数据为例

demo <- nhanes('DEMO_H')

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

图片

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

5、选择相应变量

下载完成后,我们根据研究目的选择变量。本案例需要的性别、年龄、种族、婚姻状态以及weights、strata、psu都是在人口统计资料中,用以下代码从demo中选择这些变量

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

图片

6、翻译分类变量

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

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

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

图片

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

图片

 7、下载EXAM分类中的数据 

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

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

8、下载存放表格未知的变量

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

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个月每天饮酒量

 9、 连表

此时我们有了以下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中数据抽样方法的复杂性,这份数据不能够直接利用传统的统计方法进行分析。至于如何正确分析,我们将在后续的推文中跟大家介绍!


 

  • 4
    点赞
  • 0
    评论
  • 12
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

科研杂录

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值