R/attach_DII.R

Defines functions attach_DII

Documented in attach_DII

#' calculate dietary inflammatory index
#'
#' @param data dataframe or list to be attarched
#' @param years years
#' @param rawComponet logical, whether to keep raw componet data
#' @param cat logical
#' @return dii
#' @references  Shivappa, N, Steck, et al. Designing and developing a literature-derived, population-based dietary inflammatory index[J]. Public Health Nutrition Cab International, 2014.
#' @export
#'
attach_DII <- function(data,years,rawComponet=FALSE,cat=TRUE){
    years <- data_years(data,years)
    pb <- txtProgressBar(max = 4,width = 30,style = 3)
    (tsv <- nhs_tsv('xtot|dr1tot',items = 'dietary',years = years,cat=FALSE))
    setTxtProgressBar(pb = pb,value = 1)
    dt <- nhs_read(tsv,
                   'drxtcarb,dr1tcarb:carbohydrates',
                   'drxtprot,dr1tprot:protein',
                   'drxttfat,dr1ttfat:tfat',
                   'drxtalco,dr1talco:alcohol',
                   'drxtfibe,dr1tfibe:fibre',
                   'drxtchol,dr1tchol:cholesterol',
                   'drxtsfat,dr1tsfat:saturated_fat',
                   'drxtmfat,dr1tmfat:MUFA',
                   'drxtpfat,dr1tpfat:PUFA',

                   'drxtp183,dr1tp183:n3_1', # octadecatrienoic (18:3)
                   'drxtp184,dr1tp184:n3_2', # octadecatetraenoic (18:4)
                   'drxtp204,dr1tp204:n3_3', # eicosatetraenoic (20:4)
                   'drxtp205,dr1tp205:n3_4', # eicosapentaenoic (20:5)
                   'drxtp225,dr1tp225:n3_5', # docosapentaenoic (22:5)
                   'drxtp226,dr1tp226:n3_6', # docosahexaenoic (22:6)

                   'drxtp182,dr1tp182:n6_1', # octadecadienoic (18:2)


                   'drxtniac,dr1tniac:niacin',
                   'drxtvare,drxtvara,dr1tvara:vitamin_A',
                   'drxtvb1,dr1tvb1:thiamin',
                   'drxtvb2,dr1tvb2:riboflavin',
                   'drxtvb6,dr1tvb6:vb6',
                   'drxtvb12,dr1tvb12:vb12',
                   'drxtvc,dr1tvc:vitamin_C',
                   'dr1tvd:vitamin_D',
                   'drxtve,drxtatoc,dr1tatoc:vitamin_E',
                   'drxtfdfe,dr1tfdfe:Fe',
                   'drxtmagn,dr1tmagn:Mg',
                   'drxtzinc,dr1tzinc:zinc',
                   'drxtsele,dr1tsele:selenium',
                   'drxtfa,dr1tfa:folic_acid',
                   'drxtbcar,dr1tbcar:b_carotene',
                   'drxtcaff,dr1tcaff:caffeine',
                   'drxtkcal,dr1tkcal:energy',cat = FALSE
    )
    setTxtProgressBar(pb = pb,value = 2)
    dt <- dt[,!sapply(dt,function(i) all(is.na(i))),drop=FALSE]
    dtnames <- colnames(dt)
    if ('caffeine' %in% colnames(dt)) dt$caffeine <- dt$caffeine/1000
    if ('Fe' %in% colnames(dt)) dt$Fe <- dt$Fe/1000
    setTxtProgressBar(pb = pb,value = 3)
    ck <- sapply(colnames(dt),function(i) do::left_equal(i,'n3_'))
    if (any(ck)){
        n3 <- rowSums(dt[,ck,drop=FALSE])
        dt <- dt[,!ck]
        dt$"n-3_fatty_acids" <- n3
    }
    ck <- sapply(colnames(dt),function(i) do::left_equal(i,'n6_'))
    if (any(ck)){
        n6 <- rowSums(dt[,ck,drop=FALSE])
        dt <- dt[,!ck]
        dt$"n-6_fatty_acids" <- n6
    }
    for (i in 3:ncol(dt)) dt[,i] <- dii(colnames(dt)[i],dt[,i])
    dii <- rowSums(dt[,-c(1:2)],na.rm = TRUE)
    dt$dii <- dii
    setTxtProgressBar(pb = pb,value = 4)
    # print detail
    if (cat) cat(crayon::red('\n\ndietary inflammatory index components\n\n'))
    i=0
    food <- c()
    if ('carbohydrates' %in% dtnames){ i=i+1;food <- paste0(food,paste0(crayon::red(i,':'),do::equal_length('carbohydrates',nchar = 22)))}
    if ('protein' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('protein',nchar = 22)))}
    if ('tfat' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('total fat',nchar = 22)))}
    if ('alcohol' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('alcohol',nchar = 22)))}
    if ('fibre' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('fibre',nchar = 22)))}
    if ('cholesterol' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('cholesterol',nchar = 22)))}
    if ('saturated_fat' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('saturated fat',nchar = 22)))}
    if ('MUFA' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('MUFA',nchar = 22)))}
    if ('PUFA' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('PUFA',nchar = 22)))}
    if ("n-3_fatty_acids" %in% colnames(dt)){ i=i+1;food <- paste0(food,paste0('\n',crayon::red(i,':'),"n-3 fatty acids\n"))}
    if ('n3_1' %in% dtnames) food <- paste0(food,'            octadecatrienoic(18:3),\n')
    if ('n3_2' %in% dtnames) food <- paste0(food,'            octadecatetraenoic(18:4),\n')
    if ('n3_3' %in% dtnames) food <- paste0(food,'            eicosatetraenoic(20:4),\n')
    if ('n3_4' %in% dtnames) food <- paste0(food,'            eicosapentaenoic(20:5),\n')
    if ('n3_5' %in% dtnames) food <- paste0(food,'            docosapentaenoic(22:5),\n')
    if ('n3_6' %in% dtnames) food <- paste0(food,'            docosahexaenoic(22:6)\n')


    if ("n-6_fatty_acids" %in% colnames(dt)){ i=i+1;food <- paste0(food,paste0('\n',crayon::red(i,':'),"n-6 fatty acids"))}
    if ('n6_1' %in% dtnames) food <- paste0(food,'\n            octadecadienoic(18:2)')

    if ('niacin' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('niacin',nchar = 22)))}
    if ('vitamin_A' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('vitamin A',nchar = 22)))}
    if ('thiamin' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('thiamin(vitamin B1)',nchar = 22)))}
    if ('riboflavin' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('riboflavin(vitamin B2)',nchar = 22)))}
    if ('vb6' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('vitamin B6',nchar = 22)))}
    if ('vb12' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('vitamin B12',nchar = 22)))}
    if ('vitamin_C' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('vitamin C',nchar = 22)))}
    if ('vitamin_D' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('vitamin D',nchar = 22)))}
    if ('vitamin_E' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('vitamin E',nchar = 22)))}
    if ('Fe' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('Fe',nchar = 22)))}
    if ('Mg' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('Mg',nchar = 22)))}
    if ('zinc' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('zinc',nchar = 22)))}
    if ('selenium' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('selenium',nchar = 22)))}
    if ('folic_acid' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('folic acid',nchar = 22)))}
    if ('b_carotene' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('beta-carotene',nchar = 22)))}
    if ('caffeine' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('caffeine',nchar = 22)))}
    if ('energy' %in% dtnames){ i=i+1;food <- paste0(food,paste0(ifelse(i %%3 ==0,'\n','      '),crayon::red(i,':'),do::equal_length('energy',nchar = 22)))}
    if (cat) cat(food)

    if (!rawComponet) dt <- dt[,c("Year","seqn","dii")]
    if (!missing(data)){
        dt <- dt[,c("seqn",'dii')]
        dt <- dplyr::left_join(data,dt,'seqn')
    }
    return(dt)
}


# z <- (dt$alcohol-13.98)/3.72
# p <- pnorm(z)
# s <- 2*p-1
# s*-0.278
yikeshu0611/nhanesR documentation built on Jan. 29, 2022, 6:08 a.m.