R/attach_Pregnant.R

Defines functions attach_Pregnant

Documented in attach_Pregnant

#' Pregnant Now?
#'
#' @param data data
#' @param years years
#' @details This function judges whether someone is pregnant from three angles
#' - Use the ridexprg variable in the demographic data
#' - Use the seq060 variable in the seq data
#' - Use rhq140, rhq141, rhq142 variables in rhq data
#' to determine that confirmation is yes, other is no, and missing is missing.
#' Any method of judging as pregnancy means pregnancy,
#' Any method of judging that you are not pregnant is not pregnant.
#'
#' @return pregnant
#' @export
#'
attach_Pregnant <- function(data,years){

    if (!missing(data)){
        years <- unique(data$Year)
        seqn <- unique(data$seqn)
    }
    years <- prepare_years(years)
    demo <- nhs_tsv('demo',items = 'demo',years = years,cat=FALSE)
    seq <- nhs_tsv('seq',items = 'exam',years = years,cat=FALSE)
    rhq <- nhs_tsv('rhq',items = 'q',years = years,cat=FALSE)
    nr <- nhs_read(demo,'ridexprg:prg',
                   seq,'seq060',
                   rhq,'rhq140','rhq141','rhd143',
                   lower_cd = TRUE,cat = FALSE)
    if (!missing(data)) nr <- nr[nr$seqn %in% seqn,]
    nr$prg <- recode(nr$prg,
                     "sp not pregnant at exam::no",
                     "yes, positive lab pregnancy test or self-reported pregnant at exam::yes",
                     "cannot ascertain if sp is pregnant at exam::no",
                     "the participant was not pregnant at exam::no",
                     "cannot ascertain if the participant is pregnant at exam::no")
    nr$seq060 <- recode(nr$seq060,
                        "no::no",
                        "yes::yes",
                        "don't know::na")

    nr$rhq140 <- recode(nr$rhq140,
                        "no::no",
                        "yes::yes",
                        "don't know::na")
    nr$rhq141 <- recode(nr$rhq141,
                        "no::no",
                        "yes::yes",
                        "don't know::na")
    nr$rhd143 <- recode(nr$rhd143,
                        "yes::no",
                        "no::yes",
                        "don't know::no")
    ck <- rowSums(nr[,-c(1:2)] == 'yes',na.rm = TRUE) >0
    nr$pregnant[ck] <- 'yes'
    ck <- rowSums(nr[,-c(1:2)] == 'no',na.rm = TRUE) >0
    nr$pregnant[ck] <- 'no'
    data0 <- nr[,c('seqn','Year','pregnant')]

    if (missing(data)){
        data <- data0
    }else{
        data0 <- data0[,!colnames(data0) %in% 'Year']
        data <- as.data.frame(dplyr::left_join(data,data0,'seqn'))
    }
    return(data)
}
yikeshu0611/nhanesR documentation built on Jan. 29, 2022, 6:08 a.m.