#' 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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.