1.前言
继前面孟德尔随机化的代码分享,应粉丝要求出一篇关于NHANES数据库的数据整理入门教程
前面MR代码:全代码分享|R语言孟德尔随机化怎么做?TwoSampleMR包MR一套标准流程
2.数据库界面
NHANES(National Health and Nutrition Examination Survey
,全国健康和营养调查)是美国进行的一项重要的、周期性的调查,由美国疾病控制与预防中心(CDC
)的国家健康统计中心(NCHS
)负责实施。这项调查旨在评估美国民众的健康和营养状况,并收集与健康和疾病相关的数据。
NHANES的数据通过两个主要途径收集:
- 问卷调查:参与者通过面对面访谈完成问卷,提供各种健康相关信息。
- 医学检查:在移动检查中心(MECs)进行,包括一系列的物理测量和实验室测试。
重要性:
NHANES数据库对公共卫生政策具有深远影响。政策制定者、研究人员和卫生专业人员使用这些数据来:
- 评估美国人口的健康风险。
- 制定针对特定健康问题的公共卫生策略和干预措施。
- 监测关键的健康指标和趋势,如肥胖、糖尿病和心血管疾病。
- 进行流行病学研究,建立健康和营养的关联性。
目前是仅可访问2020年前的数据:
网址:https://wwwn.cdc.gov/nchs/nhanes/Default.aspx
3.下载数据
3.1 网页下载
这里取2017-2020年为例,可用数据为该五项,占且叫之为栏目:
- 人口统计数据(Demographics)
- 饮食数据(Dietary)
- 检查数据(Examination)
- 实验室数据(Laboratory)
- 问卷数据(Questionnaire)
这里随便点了个Laboratory Data
- Metals - Urine
,直接点击下载即可,这个网页下载的优点就是速度快,因为文件一般都很小,有梯无梯差不多,只要能访问的都很快。
然后直接在R中read_xpt
打开即可
nhanesA
是一个R语言的软件包,它旨在方便用户访问和分析来自NHANES数据库的数据。这个包通过提供直接与NHANES数据库交互的函数,简化了下载和管理NHANES数据的流程。例如,它可以帮助用户检索某个特定年份的调查数据,进行子集分析,以及提供数据摘要等功能。
library(haven)
library(nhanesA)
library(tidyverse)
mydata <- read_xpt("P_UM.XPT")
下载完毕~
3.2 用R包下载
回到刚刚栏目页面,点击这里这个链接
第一列是每个研究指标的变量,我们只要关注例如P_UM
这列即可,这个编号是独一无二的
确定完编号后在R中运行,相对于网页下载的优点就是可以写循环,批量下载
mydata1 <- nhanes('P_UM')
colnames(mydata)
# [1] "SEQN" "WTSAPRP" "URXUBA" "URDUBALC" "URXUCD" "URDUCDLC" "URXUCO" "URDUCOLC" "URXUCS" "URDUCSLC" "URXUMO" "URDUMOLC" "URXUMN"
# [14] "URDUMNLC" "URXUPB" "URDUPBLC" "URXUSB" "URDUSBLC" "URXUSN" "URDUSNLC" "URXUTL" "URDUTLLC" "URXUTU" "URDUTULC"
4.整合导出数据
## 提取自己想要的列
dat<- mydata %>% select(SEQN, # 序列号
URXUBA, # 钡
URXUCD, # 镉
URXUCO, # 钴
URXUCS # 铯
)
## 根据样本合并列
head(dat)
# # A tibble: 6 × 5
# SEQN URXUBA URXUCD URXUCO URXUCS
# <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 109266 0.359 0.039 0.214 2.16
# 2 109270 2.42 0.868 0.449 9.64
# 3 109273 0.37 0.213 0.274 2.33
# 4 109274 1.72 0.184 0.482 2.80
# 5 109287 7.53 0.215 0.303 2.85
# 6 109288 0.271 0.039 0.097 5.98
head(ghb)
# SEQN LBXGH
# 1 109264 5.3
# 2 109266 5.2
# 3 109271 5.6
# 4 109273 5.1
# 5 109274 5.7
# 6 109277 5.3
result <- merge(ghb,dat)
head(result)
# SEQN LBXGH URXUBA URXUCD URXUCO URXUCS
# 1 109266 5.2 0.359 0.039 0.214 2.160
# 2 109273 5.1 0.370 0.213 0.274 2.330
# 3 109274 5.7 1.720 0.184 0.482 2.803
# 4 109290 8.4 0.720 0.631 0.379 11.910
# 5 109295 5.3 1.270 0.039 0.323 4.145
# 6 109300 5.4 0.690 0.166 0.171 2.129
write.table(result,"result.txt",quote = F,sep = "\t",row.names = F)