calculate_matsuda_index_df: Matsuda-Defronzo Index Calculation (from standard 75g OGTT)

View source: R/calculate_matsuda_index_df.R

calculate_matsuda_index_dfR Documentation

Matsuda-Defronzo Index Calculation (from standard 75g OGTT)

Description

This function calculates the Matsuda index using glucose and insulin sampled during a standard 75g oral glucose tolerance test. Results can be checked using the Matsuda online calculator.

Usage

calculate_matsuda_index_df(
  df,
  timeCol = time,
  glucoseCol = glucose,
  insulinCol = insulin,
  time_units = "min",
  glucose_units = "mg/dl",
  insulin_units = "uU/ml"
)

Arguments

df

A long-format data frame

timeCol

a column name (unquoted) indicating time values (in minutes)

glucoseCol

a column name (unquoted) storing glucose values (in mg/dL)

insulinCol

a column name (unquoted) storing insulin values (in uU/mL)

time_units

if units are not in "min", can indicate here for unit conversion (options "min" or "hr")

glucose_units

if units are not in "mg/dl", can indicate here for unit conversion (options "mg/dl" or "mmol/l")

insulin_units

if units are not in "uU/ml", can indicate here for unit conversion (options "uU/ml" or "pmol/l")

Details

Standard timepoints are 0, 30, 60, 90, and 120 min. Note: insulin unit conversion may differ differ depending on assay. Insulin (pmol/l) = insulin (uU/ml)*6

'calculate_matsuda_index_df()' requires a dataframe input with time, glucose, insulin columns.

Value

Matsuda index as a single value

Examples

library(dplyr)
# A long-format dataframe with a single subject
ogtt1 <- data.frame(
  time=c(0, 30, 60, 90, 120),              # minutes
   glucose=c(93, 129, 178, 164, 97),        # mg/dL
   insulin=c(12.8, 30.7, 68.5, 74.1, 44.0)) # uU/mL
   
 # dataframe with variable columns appropriately named
   calculate_matsuda_index_df(ogtt1) # works because columns are default names
   calculate_matsuda_index_df(ogtt1, time, glucose, insulin)
   
 # Specify column names if named differently
 ogtt2 <- data.frame(
     t=c(0, 30, 60, 90, 120),              # minutes
     gluc=c(93, 129, 178, 164, 97),        # mg/dL
     ins=c(12.8, 30.7, 68.5, 74.1, 44.0)) # uU/mL
 
 # dataframe with differently named variable columns
 # Convert units
 ogtt5 <- data.frame(time = c(0,0.5,1,1.5,2), # time in hours
                     glucose = c(5.167, 7.167, 9.889, 9.111, 5.3889), # glucose in mmol/l
                     insulin = c(76.8,184.2,411,444.6,264)) # insulin in pmol/l
 
 # you don't have to specify units, if using default values
 calculate_matsuda_index_df(ogtt1, time, glucose, insulin,
            insulin_units = "uU/ml", glucose_units = "mg/dl") # default values
 # if not default, specify units for proper conversino
 calculate_matsuda_index_df(ogtt5, time, glucose, insulin,
            time_units = "hr", insulin_units = "pmol/l", glucose_units = "mmol/l")
 
 calculate_matsuda_index_df(ogtt5, time_units = "hr", insulin_units = "pmol/l", glucose_units = "mmol/l")
 
# Handle multiple OGTT data frames
# These all need to be structured the same as a nested list.
nested_df <- dplyr::tibble(id = 1:3,
                           data = list(ogtt1, ogtt1, ogtt1)) # same data in this case
dplyr::mutate(nested_df, matsuda= purrr::map_dbl(data, ~calculate_matsuda_index_df(.x)))


JMLuther/tabletools documentation built on July 1, 2024, 2:01 p.m.