nhanesA包的介绍及使用

背景

nhanesA的开发是为了实现对国家健康和营养检查调查(NHANES)数据的完全可定制的检索。该调查是由国家卫生统计中心(NCHS)进行的,数据可在以下网站公开获取:https://www.cdc.gov/nchs/nhanes.htm。NHANES的数据每年被报告在一千多份同行评审的杂志出版物中。

NHANES Data

自1999年以来,NHANES调查一直在连续进行,在此期间的调查被称为 "连续NHANES",以区别于之前的几次调查。连续的NHANES调查以两年为一组,第一个区间是1999-2000年。

大多数NHANES数据是以SAS'XPT'格式的表格形式出现的。该调查被分为五个数据类别,这些数据是公开的,还有一个额外的类别(有限访问数据),在访问前需要书面说明和事先批准。包nhanesA主要用于公开可用的数据,但也可以检索与有限访问数据相关的一些信息。

五个公开可用的数据类别是。- 人口统计学(DEMO) - 饮食(DIET) - 检查(EXAM) - 实验室(LAB) - 问卷(Q)

在nhanesA命令中,括号内的缩写形式可以代替长的形式。

对于有限访问数据,可以列出可用的表格和变量名称,但不能直接下载数据。要在nhanesA函数中表示有限访问数据,请使用。- 有限 (LTD)

List NHANES Tables

为了快速熟悉NHANES数据,显示表格的清单是很有帮助的。使用nhanesTables可以获得某年某类别的表格信息。

library(nhanesA)
nhanesTables('EXAM', 2005)
##    Data.File.Name                             Data.File.Description
## 1           BPX_D                                    Blood Pressure
## 2           BMX_D                                     Body Measures
## 3           AUX_D                                        Audiometry
## 4        AUXTYM_D                         Audiometry - Tympanometry
## 5        DXXFEM_D          Dual Energy X-ray Absorptiometry - Femur
## 6        OPXFDT_D     Ophthalmology - Frequency Doubling Technology
## 7           OHX_D                                       Oral Health
## 8        PAXRAW_D                         Physical Activity Monitor
## 9           VIX_D                                            Vision
## 10        DXXAG_D Dual Energy X-ray Absorptiometry - Android/Gynoid
## 11        AUXAR_D                      Audiometry - Acoustic Reflex
## 12       OPXRET_D                   Ophthalmology - Retinal Imaging
## 13       DXXSPN_D          Dual Energy X-ray Absorptiometry - Spine

请注意,两年的调查间隔是从奇数年开始的。为方便起见,只输入一个4位数的年份,这样nhanesTables('EXAM', 2005)和nhanesTables('EXAM', 2006)就会产生相同的输出。

List Variables in an NHANES Table

在查看输出后,我们决定对包含身体测量数据的表'BMX_D'感兴趣。为了更好地确定是否对该表感兴趣,我们可以使用nhanesTableVars显示该表内容的详细信息。

nhanesTableVars('EXAM', 'BMX_D')
##    Variable.Name                Variable.Description
## 1       BMDSTATS Body Measures Component status Code
## 2        BMIARMC           Arm Circumference Comment
## 3        BMIARML            Upper Arm Length Comment
## 4        BMICALF                Maximal Calf Comment
## 5        BMIHEAD          Head Circumference Comment
## 6          BMIHT             Standing Height Comment
## 7         BMILEG            Upper Leg Length Comment
## 8       BMIRECUM            Recumbent Length Comment
## 9         BMISUB        Subscapular Skinfold Comment
## 10      BMITHICR         Thigh Circumference Comment
## 11        BMITRI            Triceps Skinfold Comment
## 12      BMIWAIST         Waist Circumference Comment
## 13         BMIWT                      Weight Comment
## 14       BMXARMC              Arm Circumference (cm)
## 15       BMXARML               Upper Arm Length (cm)
## 16        BMXBMI           Body Mass Index (kg/m**2)
## 17       BMXCALF     Maximal Calf Circumference (cm)
## 18       BMXHEAD             Head Circumference (cm)
## 19         BMXHT                Standing Height (cm)
## 20        BMXLEG               Upper Leg Length (cm)
## 21      BMXRECUM               Recumbent Length (cm)
## 22        BMXSUB           Subscapular Skinfold (mm)
## 23      BMXTHICR            Thigh Circumference (cm)
## 24        BMXTRI               Triceps Skinfold (mm)
## 25      BMXWAIST            Waist Circumference (cm)
## 26         BMXWT                         Weight (kg)
## 27          SEQN         Respondent sequence number.

我们看到,表BMX_D中有27列。SEQN列是受访者的序列号,包含在每个NHANES表中。实际上,SEQN是一个主题标识符,用于连接各表的信息。

Import NHANES Tables

我们现在把BMX_D和人口统计表DEMO_D一起导入。

bmx_d  <- nhanes('BMX_D')
## Processing SAS dataset BMX_D      ..
demo_d <- nhanes('DEMO_D')
## Processing SAS dataset DEMO_D     ..

我们将表格合并,并显示几个变量:

bmx_demo <- merge(demo_d, bmx_d)
options(digits=4)
select_cols <- c('RIAGENDR', 'BMXHT', 'BMXWT', 'BMXLEG', 'BMXCALF', 'BMXTHICR')
print(bmx_demo[5:8,select_cols], row.names=FALSE)
##  RIAGENDR BMXHT BMXWT BMXLEG BMXCALF BMXTHICR
##         2 156.0  75.2   38.0    36.6     53.7
##         1 167.6  69.5   40.4    35.6     48.0
##         2 163.7  45.0   39.2    31.7     41.3
##         1 182.4 101.9   41.5    42.6     50.5

Translation of Coded Values

NHANES在许多领域使用编码值。在前面的例子中,性别被编码为1或2。为了确定这些值的含义,我们可以在表DEMO_D中列出性别字段RIAGENDR的编码翻译。

nhanesTranslate('DEMO_D', 'RIAGENDR')
## $RIAGENDR
##   Code.or.Value Value.Description
## 1             1              Male
## 2             2            Female
## 3             .           Missing

如果需要,我们可以使用nhanesTranslate,通过指定data=demo_d,将代码翻译直接应用于demo_d。

demo_d <- nhanesTranslate('DEMO_D', 'RIAGENDR', data=demo_d)
## Translated columns: RIAGENDR
bmx_demo <- merge(demo_d, bmx_d)

RIAGENDR字段现在被重新编码为男性,女性,而不是1,2。

print(bmx_demo[5:8,select_cols], row.names=FALSE)
##  RIAGENDR BMXHT BMXWT BMXLEG BMXCALF BMXTHICR
##    Female 156.0  75.2   38.0    36.6     53.7
##      Male 167.6  69.5   40.4    35.6     48.0
##    Female 163.7  45.0   39.2    31.7     41.3
##      Male 182.4 101.9   41.5    42.6     50.5

Apply All Possible Code Translations to a Table

一个NHANES表可能有几十列的编码值。翻译所有可能的列是一个三步过程。1:下载表格 2:保存表格的变量列表 3:将表格和变量列表传递给nhanesTranslate

bpx_d <- nhanes('BPX_D')
## Processing SAS dataset BPX_D      ..
head(bpx_d[,6:11])
##   BPQ150A BPQ150B BPQ150C BPQ150D BPAARM BPACSZ
## 1      NA      NA      NA      NA     NA     NA
## 2       2       2       2       2      1      3
## 3       1       2       2       2      1      4
## 4       2       2       2       2      1      3
## 5       2       2       2       2      1      4
## 6       2       2       2       2      1      4
bpx_d_vars  <- nhanesTableVars('EXAM', 'BPX_D', namesonly=TRUE)
#Alternatively may use bpx_d_vars = names(bpx_d)
bpx_d <- suppressWarnings(nhanesTranslate('BPX_D', bpx_d_vars, data=bpx_d))
## Translated columns: BPAARM BPACSZ BPAEN2 BPAEN3 BPAEN4 BPQ150A BPQ150B BPQ150C BPQ150D BPXPTY BPXPULS PEASCCT1 PEASCST1
head(bpx_d[,6:11])
##   BPQ150A BPQ150B BPQ150C BPQ150D BPAARM        BPACSZ
## 1                             
## 2      No      No      No      No  Right Adult (12X22)
## 3     Yes      No      No      No  Right Large (15X32)
## 4      No      No      No      No  Right Adult (12X22)
## 5      No      No      No      No  Right Large (15X32)
## 6      No      No      No      No  Right Large (15X32)

在翻译编码列时,应该谨慎行事,因为编码的翻译可能相当长。为了提高可读性,翻译字符串的默认长度被限制为32,但可以设置为128。另外,至少有两个类别的列(如男,女)将被翻译,但最小类别可以被设置为1,以执行翻译,即使只有一个类别存在。

Downloading a Complete Survey

nhanesA的主要目标是实现对选定的NHANES表的完全可定制的处理。然而,使用nhanesA函数下载整个调查是非常容易的。假设我们想下载2007-2008年调查中的每份问卷。我们首先通过使用nhanesTables,namesonly = TRUE,得到一个表格名称的列表。然后可以使用带有lapply的nhanes下载这些表格。

q2007names  <- nhanesTables('Q', 2007, namesonly=TRUE)
q2007tables <- lapply(q2007names, nhanes)
names(q2007tables) <- q2007names

Import Dual X-Ray Absorptiometry Data

双重X射线吸收仪(DXA)数据是在1999-2006年获得的。更多信息可在https://wwwn.cdc.gov/nchs/nhanes/dxa/dxa.aspx。默认情况下,DXA数据被导入到R环境中,然而,由于表格相当大,可能需要将数据保存到一个本地文件,然后根据需要导入到R环境中。当nhanesTranslate应用于DXA数据时,只使用2005-2006年的翻译表,因为这些是目前唯一可用的HTML格式的DXA代码。

#Import into R
dxx_b <- nhanesDXA(2001)
#Save to file
nhanesDXA(2001, destfile="dxx_b.xpt")
#Import supplemental data
dxx_c_s <- nhanesDXA(2003, suppl=TRUE)
#Apply code translations
dxalist <- c('DXAEXSTS', 'DXITOT', 'DXIHE')
dxx_b <- nhanesTranslate(colnames=dxalist, data=dxx_b, dxa=TRUE)

如果你对2003-2006年的加速度计数据感兴趣,那么请看软件包nhanesaccel https://r-forge.r-project.org/R/?group_id=1733 和 accelerometry https://cran.r-project.org/package=accelerometry。

Searching across the comprehensive list of NHANES variables

NHANES资料库内容广泛,因此,进行有针对性的搜索以确定相关表格和变量是很有帮助的。每个数据组都有NHANES变量的综合清单。例如,人口统计学的变量可在https://wwwn.cdc.gov/nchs/nhanes/search/variablelist.aspx?Component=Demographics。nhanesSearch功能允许调查者输入搜索词,与全面的变量描述相匹配,并检索出匹配的变量列表。可以提供匹配的搜索条件(变量描述必须包含其中一个条件)和排他性搜索条件(变量描述必须不包含任何排他性条件)。搜索可以限制在一个特定的调查范围以及特定的数据组。

# nhanesSearch use examples
#
# Search on the word bladder, restrict to the 2001-2008 surveys, 
# print out 50 characters of the variable description
nhanesSearch("bladder", ystart=2001, ystop=2008, nchar=50)
#
# Search on "urin" (will match urine, urinary, etc), from 1999-2010, return table names only
nhanesSearch("urin", ignore.case=TRUE, ystop=2010, namesonly=TRUE)
#
# Search on "urin", exclude "During", search surveys from 1999-2010, return table names only
nhanesSearch("urin", exclude_terms="during", ignore.case=TRUE, ystop=2010, namesonly=TRUE)
#
# Restrict search to 'EXAM' and 'LAB' data groups. Explicitly list matching and exclude terms, leave ignore.case set to default value of FALSE. Search surveys from 2009 to present.
nhanesSearch(c("urin", "Urin"), exclude_terms=c("During", "eaten during", "do during"), data_group=c('EXAM', 'LAB'), ystart=2009)
#
# Search on "tooth" or "teeth", all years
nhanesSearch(c("tooth", "teeth"), ignore.case=TRUE)
#
# Search for variables where the variable description begins with "Tooth"
nhanesSearch("^Tooth")

Searching for tables that contain a specific variable

nhanesSearch是一个多功能的搜索功能,因为它将综合变量列表导入到一个数据框中。这允许对变量进行详细的条件性提取。然而,每次调用 nhanesSearch 都需要一分钟以上的时间来处理。当我们知道感兴趣的特定变量的名称,并且只寻找与该变量名称完全匹配的变量时,可以实现更快的处理。函数 nhanesSearchVarName 在 html 中直接匹配给定的变量名称,然后只将匹配的元素转换为数据框。因此,调用 nhanesSearchVarName 的执行速度比 nhanesSearch 快得多;通常在 30 秒以内。

#nhanesSearchVarName use examples

nhanesSearchVarName('BPXPULS')
##  [1] "BPX_D" "BPX_E" "BPX"   "BPX_C" "BPX_B" "BPX_F" "BPX_G" "BPX_H" "BPX_I"
## [10] "BPX_J"
nhanesSearchVarName('CSQ260i', includerdc=TRUE, nchar=38, namesonly=FALSE)
##   Variable.Name                   Variable.Description Data.File.Name
## 1       CSQ260i Do you now have any of the following p        CSX_G_R
## 2       CSQ260i Do you now have any of the following p          CSX_H
##   Data.File.Description Begin.Year EndYear   Component Use.Constraints
## 1         Taste & Smell       2012    2012 Examination        RDC Only
## 2         Taste & Smell       2013    2014 Examination            None

Searching for tables by name pattern

为了在不同的调查中对数据进行分组,列出所有遵循给定命名模式的可用表格是很有用的。函数nhanesSearchTableNames用于这种模式匹配。例如,如果我们想处理所有可用的身体测量数据,我们可以用nhanesSearchTableNames('BMX')检索全部可用的表。搜索是在全面的表列表上进行的,它比全面的变量列表小得多,因此调用 nhanesSearchTableNames 只需要几秒钟。

# nhanesSearchTableNames use examples
nhanesSearchTableNames('BMX')
##  [1] "BMX_D" "BMX"   "BMX_E" "BMX_C" "BMX_B" "BMX_F" "BMX_H" "BMX_G" "BMX_I"
## [10] "BMX_J"
nhanesSearchTableNames('HPVS', includerdc=TRUE, nchar=42, details=TRUE)
##        Years                             Data.File.Name     Doc.File
## 1  2009-2010 Human Papillomavirus (HPV) - 6, 11, 16 & 1 HPVSER_F Doc
## 2  2005-2006 Human Papillomavirus (HPV) - 6, 11, 16 & 1 HPVS_D_R Doc
## 3  2007-2008 Human Papillomavirus (HPV) - 6, 11, 16 & 1 HPVSER_E Doc
## 4  2005-2006 Human Papillomavirus (HPV) - 6, 11, 16 & 1 HPVSER_D Doc
## 5  2005-2006 Human Papillomavirus (HPV) - Multiplexed 6 HPVSRM_D Doc
## 6  2005-2006 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWR_D Doc
## 7  2007-2008 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWR_E Doc
## 8  2009-2010 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWR_F Doc
## 9  2011-2012 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWR_G Doc
## 10 2005-2006 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWR_D Doc
## 11 2009-2010 Human Papillomavirus (HPV) DNA - Vaginal S HPVS_F_R Doc
## 12 2011-2012 Human Papillomavirus (HPV) DNA - Vaginal S HPVS_G_R Doc
## 13 2013-2014 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWR_H Doc
## 14 2013-2014 Human Papillomavirus (HPV) DNA - Vaginal S HPVS_H_R Doc
## 15 2015-2016 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWC_I Doc
## 16 2015-2016 Human Papillomavirus (HPV) DNA - Vaginal S HPVSWR_I Doc
## 17 2015-2016 Human Papillomavirus (HPV) DNA - Vaginal S HPVS_I_R Doc
## 18 2017-2018 Human Papillomavirus (HPV) DNA - Vaginal S HPVS_J_R Doc
##                         Data.File        Date.Published
## 1  HPVSER_F Data [XPT - 171.6 KB]         November 2013
## 2                        RDC Only             July 2013
## 3  HPVSER_E Data [XPT - 155.7 KB]         November 2013
## 4  HPVSER_D Data [XPT - 151.6 KB]             July 2013
## 5  HPVSRM_D Data [XPT - 302.6 KB]          January 2015
## 6  HPVSWR_D Data [XPT - 694.4 KB]         November 2010
## 7  HPVSWR_E Data [XPT - 677.9 KB]           August 2012
## 8  HPVSWR_F Data [XPT - 725.2 KB]           August 2012
## 9  HPVSWR_G Data [XPT - 661.1 KB]            March 2015
## 10 HPVSWR_D Data [XPT - 694.4 KB] Updated November 2018
## 11                       RDC Only           August 2012
## 12                       RDC Only            March 2015
## 13 HPVSWR_H Data [XPT - 716.6 KB]         December 2016
## 14                       RDC Only         December 2016
## 15  HPVSWC_I Data [XPT - 33.3 KB]         November 2018
## 16 HPVSWR_I Data [XPT - 667.5 KB]         November 2018
## 17                       RDC Only         November 2018
## 18                       RDC Only         December 2020

请将任何反馈或要求发送到 [email protected]。希望你喜欢你在nhanesA的经历!

你可能感兴趣的:(统计分析,数据库,R语言)