Type: | Package |
Title: | Calculate the Cost and Environmental Impact of a Ideal Diet |
Version: | 1.0.0.0 |
RoxygenNote: | 7.3.1 |
Encoding: | UTF-8 |
Imports: | readxl, rlang, dplyr, tidyselect, stats, xlsx, magrittr |
Depends: | R (≥ 2.10) |
LazyData: | true |
Description: | Easily perform a Monte Carlo simulation to evaluate the cost and carbon, ecological, and water footprints of a set of ideal diets. Pre-processing tools are also available to quickly treat the data, along with basic statistical features to analyze the simulation results — including the ability to establish confidence intervals for selected parameters, such as nutrients and price/emissions. A 'standard version' of the datasets employed is included as well, allowing users easy access to customization. This package brings to R the 'Python' software initially developed by Vandevijvere, Young, Mackay, Swinburn and Gahegan (2018) <doi:10.1186/s12966-018-0648-6>. |
License: | MIT + file LICENSE |
URL: | https://github.com/hbracarense/dietcost |
BugReports: | https://github.com/hbracarense/dietcost/issues |
NeedsCompilation: | no |
Packaged: | 2025-05-07 19:28:15 UTC; hbrac |
Author: | Henrique Bracarense
|
Maintainer: | Henrique Bracarense <hbracarense@hotmail.com> |
Repository: | CRAN |
Date/Publication: | 2025-05-09 14:10:16 UTC |
Pipe operator
Description
See magrittr::%>%
for details.
Usage
lhs %>% rhs
Arguments
lhs |
A value or the magrittr placeholder. |
rhs |
A function call using the magrittr semantics. |
Value
The result of calling 'rhs(lhs)'.
Food constraint data addition
Description
Adds nutrients constraint data, according to chosen diet, to foods dataframe.
Usage
addConstraintData(filepath, df, diets, max_scale, override_min = NULL)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored.. |
df |
Foods dataframe. |
diets |
Chosen diets. Constraint sheets in foods dataset must be of format 'constraints_DIETNAME_diet_foods', then the parameter passed will be DIETNAME. Can be a vector of diets in format c('DIETNAME1','DIETNAME2',...,'DIETNAMEN'). |
max_scale |
Maximum scale. |
override_min |
If is not null, overrides all minimum values. |
Value
Foods dataframe with constraints columns.
Emission data addition
Description
Adds emission data to foods dataframe.
Usage
addEmissionData(filepath, df, emission_cols = NULL)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored. |
df |
Foods dataframe. |
emission_cols |
Optional parameter. Emission column names if standard dataset isn't used. |
Value
Food dataframe with emission data.
Food group constraint data addition
Description
Adds serves constraints to food groups dataframe
Usage
addFoodGroupsConstraintData(filepath, df, diets)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored.. |
df |
Food groups dataframe. |
diets |
Chosen diets. Constraint sheets in foods dataset must be of format 'constraints_DIETNAME_diet_food_groups', then the parameter passed will be DIETNAME. Can be a vector of diets in format c('DIETNAME1','DIETNAME2',...,'DIETNAMEN'). |
Value
Food groups dataframe with added constraint data.
Nutrients data addition
Description
Adds nutrients data to foods dataframe.
Usage
addNutrientData(filepath, df)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored.. |
df |
Foods dataframe. |
Value
Foods dataframe with nutrient columns.
Price data addition
Description
Adds price data to foods dataframe.
Usage
addPriceData(filepath, df)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored.. |
df |
Foods dataframe. |
Value
Foods dataframe with added price data.
Float range
Description
Checks if a numeric variable is within a continuous float range.
Usage
add_float_range(variable, min, max)
Arguments
variable |
Numeric variable. |
min |
Minimum possible value. |
max |
Maximum possible value. |
Value
No return value,only performs a check.
Discrete range
Description
Checks if a variable is within a discrete range.
Usage
add_range(variable, range, message)
Arguments
variable |
variable. |
range |
Allowed range. |
message |
Message to be printed in case of failure. |
Value
No return value, only performs a check.
Calculates grouped results for a Monte Carlo Simulation
Description
Calculates a confidence interval for price and footprints obtained through a Monte Carlo Simulation, grouped by food groups. This function should be employed only if the standard table supplied with this package is utilized. Prints a .xlsx file in the home directory.
Usage
calculateGroupedResults(path_file, report_path, confidence_interval)
Arguments
path_file |
A string containing the path to the folder containing the .csv files created in the monteCarlo function. |
report_path |
A string containing the path to where the report will be saved. |
confidence_interval |
A float. Must be either 0.01, 0.05 or 0.1. |
Value
No R object return, prints an Excel workbook.
Calculates results for a Monte Carlo Simulation
Description
Calculates a confidence interval for several parameters obtained through a Monte Carlo Simulation. This function should be employed only if the standard table supplied with this package is utilized. Prints a .xlsx file in the home directory.
Usage
calculateResults(path_file, report_path, confidence_interval)
Arguments
path_file |
A string containing the path to the folder containing the .csv files created in the monteCarlo function. |
report_path |
A string containing the path to where the report will be saved. |
confidence_interval |
A float. Must be either 0.01, 0.05 or 0.1. |
Value
No R object return, prints an Excel workbook.
Linked foods check
Description
Checks if lower bound linked foods serves are lower or equal to higher bound linked foods serves.
Usage
checkLinkedFoods(df, low, high)
Arguments
df |
Random meal plan. |
low |
Vector of lower bound food IDs. |
high |
Vector of higher bound food IDs. |
Value
Differences dataframe.
All zero difference check
Description
Checks if differences dataframe is all zeroes.
Usage
checkZeroDiff(diff)
Arguments
diff |
Differences dataframe |
Value
Boolean. TRUE if all zeroes, FALSE otherwise.
Missing value check
Description
Checks if there are any missing values in a given column from the dataset.
Usage
check_function(name, column)
Arguments
name |
Column in which missing values will be sought. |
column |
Column name, in string format. |
Value
No return, only performs a check.
ID mismatch check
Description
Checks if a given food has an ID assigned but is absent in another dataset.
Usage
check_id_defined(df1, df2, value)
Arguments
df1 |
First dataframe. |
df2 |
Second dataframe. |
value |
Dataset name. |
Value
No return, only performs a check.
Food/price mismatch check
Description
Checks if all foods have a price.
Usage
check_match_food_price(df)
Arguments
df |
Dataframe. |
Value
No return, only performs a check.
Individual/diet mismatch check
Description
Checks if all individuals have a matching diet.
Usage
check_match_individual_diet(df)
Arguments
df |
Dataframe. |
Value
No return, only performs a check.
Minimum intake food groups check
Description
Looks for a minimum value and sets zero if missing,
Usage
check_min_exists(df, check, col)
Arguments
df |
Dataframe. |
check |
Boolean variable to permit optional food group. |
col |
Minimum percentage intake column name. |
Value
Dataframe.
Applies non-nummeric value check to entire dataframe
Description
Checks if values supposed to be numeric are in fact numeric.
Usage
check_nom_num_df(df)
Arguments
df |
Dataframe columns. |
Value
No return, only performs a check.
Non-numeric check
Description
Checks if values supposed to be numeric are in fact numeric.
Usage
check_non_num(df)
Arguments
df |
Dataframe column. |
Value
No return, only performs a check.
Spellcheck
Description
Checks if two datasets have the same spelling in names column.
Usage
check_spelling(df1, df2, condition)
Arguments
df1 |
First dataframe. |
df2 |
Second dataframe. |
condition |
Column to be joined. |
Value
No return, only performs a check.
Variety check
Description
Checks if varieties are into the allowed range (1,2 or 3).
Usage
check_variety(df)
Arguments
df |
Dataframe variety column. |
Value
No return, only performs a check.
Optional food groups check
Description
If discretionary foods, alcohol or takeaway are permitted, looks for a minimum value and sets zero if missing,
Usage
checks_optional_food_groups(check, value)
Arguments
check |
Boolean variable to permit optional food group. |
value |
Minimum percentage of energy intake from optional food group. |
Value
Minimum percentage of energy intake from optional food group.
Food group serves conversion
Description
Converts food group serves dataframe to weekly values.
Usage
convertWeeklyFoodGroups(df, diet, individual)
Arguments
df |
Food group serves dataframe. |
diet |
Chosen diet. Must be DIETNAME from 'constraints_DIETNAME_diet_food_groups' sheet in dataset. |
individual |
Individual whose random meal plan will be created to. Can be one of man, woman, boy or girl. |
Value
Converted food group serves dataframe.
Examples
food_groups_wk <- convertWeeklyFoodGroups(DIETCOST::food_groups, 'C', 'man');
Nutrient targets conversion
Description
Converts nutrient targets dataframe to weekly values.
Usage
convertWeeklyNutrientTargets(df, diet, person, nutrient_constraints = NULL)
Arguments
df |
Nutrient targets dataframe. |
diet |
Chosen diet. Must be DIETNAME from 'constraints_DIETNAME_diet_foods' sheet in dataset. |
person |
Individual whose random meal plan will be created to. Can be one of man, woman, boy or girl. |
nutrient_constraints |
Optional parameter. Vector of nutrients column names to be used if not all nutrients are to be used as constraints. |
Value
Converted nutrient targets dataframe.
Examples
nutrient_targets_wk <- convertWeeklyNutrientTargets(DIETCOST::nutrient_targets, 'C', 'man')
Weekly conversion
Description
Converts data from daily to weekly
Usage
converts_dataframe(df, exclusion_cols)
Arguments
df |
Dataframe. |
exclusion_cols |
Columns (non-numerical or percentage) that conversion won't be applied. |
Value
Weekly dataframe.
Food data creation
Description
Creates a food data dataframe
Usage
createFoodData(filepath, redmeat_ids)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored. |
redmeat_ids |
Vector of redmeat IDs. |
Value
Food dataframe.
Food group data creation
Description
Creates and populates a food group data dataframe
Usage
createFoodGroupData(df)
Arguments
df |
Foods dataframe. |
Value
Food group dataframe.
Nutrients data addition
Description
Adds nutrients data to foods dataframe.
Usage
createNutrientTargets(
filepath,
allow_alcohol = TRUE,
allow_discretionary = TRUE,
allow_takeaway = TRUE,
alcohol_perc_max = NULL,
discretionary_perc_max = NULL,
takeaway_perc_max = NULL
)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored.. |
allow_alcohol |
Boolean variable checking if alcohol is permitted. Default TRUE. |
allow_discretionary |
Boolean variable checking if discretionary foods are permitted. Default TRUE. |
allow_takeaway |
Boolean variable checking if takeaway is permitted. Default TRUE. |
alcohol_perc_max |
Optional parameter. Defines maximum energy intake derived from alcohol. |
discretionary_perc_max |
Optional parameter. Defines maximum energy intake derived from discretionary foods. |
takeaway_perc_max |
Optional parameter. Defines maximum energy intake derived from takeaway. |
Value
Nutrient targets dataframe.
Random meal plan
Description
Creates a random meal plan.
Usage
createRandomMeal(
foods_df,
targets_df,
person,
diet,
allowed_varieties,
min_serve_size_difference,
allow_discretionary = TRUE,
allow_alcohol = TRUE,
allow_takeaway = TRUE,
emission_cols = NULL,
nutrient_cols = NULL
)
Arguments
foods_df |
Foods dataframe. |
targets_df |
Nutrient targets dataframe. |
person |
Individual whose random meal plan will be created to. Can be one of man, woman, boy or girl. |
diet |
Chosen diet. Must be DIETNAME from 'constraints_DIETNAME_diet_foods' sheet in dataset. |
allowed_varieties |
Permitted food varieties. Can be a vector of the following: 1,2 and/or 3. |
min_serve_size_difference |
Multiplier to serve difference. A float between 0 and 1. |
allow_discretionary |
Boolean variable checking if discretionary foods are permitted. Default TRUE. |
allow_alcohol |
Boolean variable checking if alcohol is permitted. Default TRUE. |
allow_takeaway |
Boolean variable checking if takeaway is permitted. Default TRUE. |
emission_cols |
Optional parameter. Emission column names if standard dataset isn't used. |
nutrient_cols |
Optional parameter. Nutrients column names if standard dataset isn't used. |
Value
Random meal plan dataframe.
Examples
foods_df <- createRandomMeal(foods_df = DIETCOST::foods,
targets_df = DIETCOST::nutrient_targets,
person = 'man',
diet = 'C',
allowed_varieties = c(1,2,3),
min_serve_size_difference = 0.5,
allow_takeaway = TRUE,
allow_alcohol = TRUE,
allow_discretionary = TRUE)
Difference calculator
Description
Calculates difference between values of random meal plan created and targets logged.
Usage
diff_calc(val, min, max)
Arguments
val |
Value to be evalueted. |
min |
Minimum constraint. |
max |
Maximum constraint. |
Value
Difference.
MJ to KJ conversion
Description
Converts energy values in megajoules (MJ) to kilojoules (KJ),
Usage
energy_conversor(df, min, max)
Arguments
df |
Dataframe. |
min |
Minimum energy column name. Default 'energy_mj_min'. |
max |
Maximum energy column name. Default 'energy_mj_max'. |
Value
No return, only performs a check.
Single-function food dataframe creation
Description
Creates foods dataframe, with emission, nutrients, constraints and price data, in a single function.
Usage
foodData(
filepath = filepath,
redmeat_ids,
diets,
max_scale,
emission_cols = NULL,
override_min = NULL
)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored.. |
redmeat_ids |
Vector of unique food IDs that are redmeat. |
diets |
Chosen diets. Constraint sheets in foods dataset must be of format 'constraints_DIETNAME_diet_foods', then the parameter passed will be DIETNAME. Can be a vector of diets in format c('DIETNAME1','DIETNAME2',...,'DIETNAMEN'). |
max_scale |
Maximum scale. Default is two. |
emission_cols |
Optional parameter. Emission column names if standard dataset isn't used. |
override_min |
If is not null, overrides all minimum values |
Value
Foods dataframe.
Single-function food group dataframe creation
Description
Creates food groups dataframe, with constraints data, in a single function.
Usage
foodGroupData(filepath, df_foods, diets)
Arguments
filepath |
Path in which the dataset, in .xlsx format, is stored. |
df_foods |
Foods dataframe. |
diets |
Chosen diets. Constraint sheets in foods dataset must be of format 'constraints_DIETNAME_diet_food_groups', then the parameter passed will be DIETNAME. Can be a vector of diets in format c('DIETNAME1','DIETNAME2',...,'DIETNAMEN'). |
Value
Food groups dataframe.
Food groups dataset example
Description
A set of data containing commonly available food groups based on a Brazilian typical diet.
Usage
food_groups
Format
A dataframe with 12 rows and 74 columns:
- food_group
Food group, i.e. 'Fruit' or 'Vegetable'
- food_group_id
Numerical code for dood group
- man_min_g_C
Weekly minimal current diet intake for males, in grams
- man_max_g_C
Weekly maximal current diet intake for males, in grams
- man_target_g_C
Weekly target current diet intake for males, in grams
- man_min_serve_C
Weekly minimal current diet intake for males, in serves
- man_max_serve_C
Weekly maximal current diet intake for males, in serves
- man_target_serve_C
Weekly target current diet intake for males, in serves
- woman_min_g_C
Weekly minimal current diet intake for females, in grams
- woman_max_g_C
Weekly maximal current diet intake for females, in grams
- woman_target_g_C
Weekly target current diet intake for females, in grams
- woman_min_serve_C
Weekly minimal current diet intake for females, in serves
- woman_max_serve_C
Weekly maximal current diet intake for females, in serves
- woman_target_serve_C
Weekly target current diet intake for females, in serves
- boy_min_g_C
Weekly minimal current diet intake for boys, in grams
- boy_max_g_C
Weekly maximal current diet intake for boys, in grams
- boy_target_g_C
Weekly target current diet intake for boys, in grams
- boy_min_serve_C
Weekly minimal current diet intake for boys, in serves
- boy_max_serve_C
Weekly maximal current diet intake for boys, in serves
- boy_target_serve_C
Weekly target current diet intake for boys, in serves
- girl_min_g_C
Weekly minimal current diet intake for girls, in grams
- girl_max_g_C
Weekly maximal current diet intake for girls, in grams
- girl_target_g_C
Weekly target current diet intake for girls, in grams
- girl_min_serve_C
Weekly minimal current diet intake for girls, in serves
- girl_max_serve_C
Weekly maximal current diet intake for girls, in serves
- girl_target_serve_C
Weekly target current diet intake for girls, in serves
- man_min_g_PF
Weekly minimal EAT-Lancet diet intake for males, in grams
- man_max_g_PF
Weekly maximal EAT-Lancet diet intake for males, in grams
- man_target_g_PF
Weekly target EAT-Lancet diet intake for males, in grams
- man_min_serve_PF
Weekly minimal EAT-Lancet diet intake for males, in serves
- man_max_serve_PF
Weekly maximal EAT-Lancet diet intake for males, in serves
- man_target_serve_PF
Weekly target EAT-Lancet diet intake for males, in serves
- woman_min_g_PF
Weekly minimal EAT-Lancet diet intake for females, in grams
- woman_max_g_PF
Weekly maximal EAT-Lancet diet intake for females, in grams
- woman_target_g_PF
Weekly target EAT-Lancet diet intake for females, in grams
- woman_min_serve_PF
Weekly minimal EAT-Lancet diet intake for females, in serves
- woman_max_serve_PF
Weekly maximal EAT-Lancet diet intake for females, in serves
- woman_target_serve_PF
Weekly target EAT-Lancet diet intake for females, in serves
- boy_min_g_PF
Weekly minimal EAT-Lancet diet intake for boys, in grams
- boy_max_g_PF
Weekly maximal EAT-Lancet diet intake for boys, in grams
- boy_target_g_PF
Weekly target EAT-Lancet diet intake for boys, in grams
- boy_min_serve_PF
Weekly minimal EAT-Lancet diet intake for boys, in serves
- boy_max_serve_PF
Weekly maximal EAT-Lancet diet intake for boys, in serves
- boy_target_serve_PF
Weekly target EAT-Lancet diet intake for boys, in serves
- girl_min_g_PF
Weekly minimal EAT-Lancet diet intake for girls, in grams
- girl_max_g_PF
Weekly maximal EAT-Lancet diet intake for girls, in grams
- girl_target_g_PF
Weekly target EAT-Lancet diet intake for girls, in grams
- girl_min_serve_PF
Weekly minimal EAT-Lancet diet intake for girls, in serves
- girl_max_serve_PF
Weekly maximal EAT-Lancet diet intake for girls, in serves
- girl_target_serve_PF
Weekly target EAT-Lancet diet intake for girls, in serves
- man_min_g_H
Weekly minimal healthy diet intake for males, in grams
- man_max_g_H
Weekly maximal healthy diet intake for males, in grams
- man_target_g_H
Weekly target healthy diet intake for males, in grams
- man_min_serve_H
Weekly minimal healthy diet intake for males, in serves
- man_max_serve_H
Weekly maximal healthy diet intake for males, in serves
- man_target_serve_H
Weekly target healthy diet intake for males, in serves
- woman_min_g_H
Weekly minimal healthy diet intake for females, in grams
- woman_max_g_H
Weekly maximal healthy diet intake for females, in grams
- woman_target_g_H
Weekly target healthy diet intake for females, in grams
- woman_min_serve_H
Weekly minimal healthy diet intake for females, in serves
- woman_max_serve_H
Weekly maximal healthy diet intake for females, in serves
- woman_target_serve_H
Weekly target healthy diet intake for females, in serves
- boy_min_g_H
Weekly minimal healthy diet intake for boys, in grams
- boy_max_g_H
Weekly maximal healthy diet intake for boys, in grams
- boy_target_g_H
Weekly target healthy diet intake for boys, in grams
- boy_min_serve_H
Weekly minimal healthy diet intake for boys, in serves
- boy_max_serve_H
Weekly maximal healthy diet intake for boys, in serves
- boy_target_serve_H
Weekly target healthy diet intake for boys, in serves
- girl_min_g_H
Weekly minimal healthy diet intake for girls, in grams
- girl_max_g_H
Weekly maximal healthy diet intake for girls, in grams
- girl_target_g_H
Weekly target healthy diet intake for girls, in grams
- girl_min_serve_H
Weekly minimal healthy diet intake for girls, in serves
- girl_max_serve_H
Weekly maximal healthy diet intake for girls, in serves
- girl_target_serve_H
Weekly target healthy diet intake for girls, in serves
Source
Elaborated by authors.
Foods dataset example
Description
A set of data containing commonly available foods based on a Brazilian typical diet.
Usage
foods
Format
A dataframe with 99 rows and 45 columns:
- food_group
Food group, i.e. 'Fruit' or 'Vegetable'
- food_group_id
Numerical code for dood group
- food_name
Food name, i.e. LEMON
- food_id
Unique numerical food id
- variety
Variety. Must be 1, 2 or 3
- redmeat
Boolean redmeat identifier
- CF_gCO2eq
Carbon footprint
- WF_l
Water footprint
- EF_g_m2
Ecological footprint
- serve_size_C
Serve size for current diet, in grams
- man_min_C
Minimal current diet intake for males, in grams
- woman_min_C
Minimal current diet intake for females, in grams
- boy_min_C
Minimal current diet intake for boys, in grams
- girl_min_C
Minimal current diet intake for girls, in grams
- man_max_C
Maximal current diet intake for males, in grams
- woman_max_C
Maximal current diet intake for females, in grams
- boy_max_C
Maximal current diet intake for boys, in grams
- girl_max_C
Maximal current diet intake for girls, in grams
- serve_size_PF
Serve size for EAT-Lancet diet, in grams
- man_min_PF
Minimal EAT-Lancet diet intake for males, in grams
- woman_min_PF
Minimal EAT-Lancet diet intake for females, in grams
- boy_min_PF
Minimal EAT-Lancet diet intake for boys, in grams
- girl_min_PF
Minimal EAT-Lancet diet intake for girls, in grams
- man_max_PF
Maximal EAT-Lancet diet intake for males, in grams
- woman_max_PF
Maximal EAT-Lancet diet intake for females, in grams
- boy_max_PF
Maximal EAT-Lancet diet intake for boys, in grams
- girl_max_PF
Maximal EAT-Lancet diet intake for girls, in grams
- serve_size_H
Serve size for healthy diet, in grams
- man_min_H
Minimal healthy diet intake for males, in grams
- woman_min_H
Minimal healthy diet intake for females, in grams
- boy_min_H
Minimal healthy diet intake for boys, in grams
- girl_min_H
Minimal healthy diet intake for girls, in grams
- man_max_H
Maximal healthy diet intake for males, in grams
- woman_max_H
Maximal healthy diet intake for females, in grams
- boy_max_H
Maximal healthy diet intake for boys, in grams
- girl_max_H
Maximal healthy diet intake for girls, in grams
- energy_kj_g
Energy content of food, in kJ/g
- fat_g
Fat content of food per grams
- sat_fat_g
Saturated fat content of food per grams
- CHO_g
Carbohydrates content of food per grams
- sugars_g
Sugars content of food per grams
- fibre_g
Fibre content of food per grams
- protein_g
Protein content of food per grams
- sodium_mg
Sodium content of food per miligrams
- price
Price of food per 100g
Source
Elaborated by authors.
General difference calculation
Description
Applies difference calculation to entire dataset.
Usage
getDifference(df_target, df_nutrients, merge_col)
Arguments
df_target |
Constraints dataframe. |
df_nutrients |
Nutrients/serves from random meal plan dataframe. |
merge_col |
Column to join both dataframes. |
Value
Differences dataframe.
Food group serves calculator
Description
Calculates total food group serves of random meal plan.
Usage
getFoodGroupServes(df)
Arguments
df |
Random meal plan. |
Value
Food group serves dataframe.
Nutrients values calculator
Description
Calculates nutritional value of meal plan.
Usage
getNutrients(df, nutrient_cols = NULL)
Arguments
df |
Random meal plan. |
nutrient_cols |
Optional parameter. Vector of nutrients column names to be used if nutrients are different from standard dataset. |
Value
Nutrients dataframe.
Percentage values calculator
Description
Calculates percentage nutrient values.
Usage
getPerc(df_nutri, df_meal)
Arguments
df_nutri |
Nutrient constraints dataframe. |
df_meal |
Random meal plan |
Value
Percentage dataframe.
Join function
Description
Safely performs a left join between two dataframes.
Usage
join_function(df1, df2, condition)
Arguments
df1 |
First dataframe. |
df2 |
Second dataframe. |
condition |
Column in which the two datframes will be joined. Can be a single string or a vector. |
Value
Dataframe.
Monte Carlo simulation
Description
Creates a Monte Carlo simulation to a given number of iterations. A hit meal consists of one that returnz zero difference between nutrient targets and random meal plan, food groups serves and respects lower linked foods serves lower or equal to higher linked foods serves, if existent.
Usage
monteCarlo(
dir_path,
iterations,
foods_df,
nutrient_targets_df,
food_group_targets_df,
person,
diet,
allowed_varieties,
min_serve_size_difference,
allow_discretionary = TRUE,
allow_alcohol = TRUE,
allow_takeaway = TRUE,
emission_cols = NULL,
nutrient_cols = NULL,
nutrient_constraints = NULL,
linked_low_1 = NULL,
linked_high_1 = NULL,
linked_low_2 = NULL,
linked_high_2 = NULL
)
Arguments
dir_path |
A string containing the path where a directory will be created. |
iterations |
Number of iterations. Integer. |
foods_df |
Foods dataframe. |
nutrient_targets_df |
Nutrient constraints dataframe. |
food_group_targets_df |
Food group serves dataframe. |
person |
Individual whose random meal plan will be created to. Can be one of man, woman, boy or girl. |
diet |
Chosen diet. Must be DIETNAME from 'constraints_DIETNAME_diet_foods' sheet in dataset. |
allowed_varieties |
Permitted food varieties. Can be a vector of the following: 1,2 and/or 3. |
min_serve_size_difference |
Multiplier to serve difference. A float between 0 and 1. |
allow_discretionary |
Boolean variable checking if discretionary foods are permitted. Default TRUE. |
allow_alcohol |
Boolean variable checking if alcohol is permitted. Default TRUE. |
allow_takeaway |
Boolean variable checking if takeaway is permitted. Default TRUE. |
emission_cols |
Optional parameter. Emission column names if standard dataset isn't used. |
nutrient_cols |
Optional parameter. Nutrients column names if standard dataset isn't used. |
nutrient_constraints |
Optional parameter. Vector of nutrients column names to be used if not all nutrients are to be used as constraints. |
linked_low_1 |
Optional parameter. Vector of lower bound food IDs. |
linked_high_1 |
Optional parameter. Vector of higher bound food IDs. |
linked_low_2 |
Optional parameter. Vector of lower bound food IDs. |
linked_high_2 |
Optional parameter. Vector of higher bound food IDs. |
Value
List of dataframes, containing results of simulation.
Single-function Monte Carlo simulation and results export.
Description
Runs Monte Carlo Simulation and prints results, in .xlsx format, in a single funtion.
Usage
monteCarloSimulation(
dir_path,
iterations,
foods_df,
nutrient_targets_df,
food_group_targets_df,
person,
diet,
allowed_varieties,
min_serve_size_difference,
allow_discretionary = TRUE,
allow_alcohol = TRUE,
allow_takeaway = TRUE,
emission_cols = NULL,
nutrient_cols = NULL,
nutrient_constraints = NULL,
linked_low_1 = NULL,
linked_high_1 = NULL,
linked_low_2 = NULL,
linked_high_2 = NULL
)
Arguments
dir_path |
A string containing the path where a directory will be created. This same path will hold the reports Excel workbook. |
iterations |
Number of iterations. Integer. |
foods_df |
Foods dataframe. |
nutrient_targets_df |
Nutrient constraints dataframe. |
food_group_targets_df |
Food group serves dataframe. |
person |
Individual whose random meal plan will be created to. Can be one of man, woman, boy or girl. |
diet |
Chosen diet. Must be DIETNAME from 'constraints_DIETNAME_diet_foods' sheet in dataset. |
allowed_varieties |
Permitted food varieties. Can be a vector of the following: 1,2 and/or 3. |
min_serve_size_difference |
Multiplier to serve difference. A float between 0 and 1. |
allow_discretionary |
Boolean variable checking if discretionary foods are permitted. Default TRUE. |
allow_alcohol |
Boolean variable checking if alcohol is permitted. Default TRUE. |
allow_takeaway |
Boolean variable checking if takeaway is permitted. Default TRUE. |
emission_cols |
Optional parameter. Emission column names if standard dataset isn't used. |
nutrient_cols |
Optional parameter. Nutrients column names if standard dataset isn't used. |
nutrient_constraints |
Optional parameter. Vector of nutrients column names to be used if not all nutrients are to be used as constraints. |
linked_low_1 |
Optional parameter. Vector of lower bound food IDs. |
linked_high_1 |
Optional parameter. Vector of higher bound food IDs. |
linked_low_2 |
Optional parameter. Vector of lower bound food IDs. |
linked_high_2 |
Optional parameter. Vector of higher bound food IDs. |
Value
No R object return. Prints an Excel workbook.
Nutrient data application to random meal plan created
Description
Applies nutrient data calculation to random meal plan generated.
Usage
nutrientDataCalculation(df, nutrient_cols = NULL)
Arguments
df |
Random meal plan. |
nutrient_cols |
Optional parameter. Nutrient column names if standard dataset isn't used. |
Value
Random meal plan with nutrients calculated.
Nutrients dataset example
Description
A set of data containing nutrient weekly targets based on a Brazilian typical diet.
Usage
nutrient_targets
Format
A dataframe with 12 rows and 48 columns:
- individual
Person whose nutrient targets will be provided: man, woman, boy or girl
- diet
Diet whose nutrient targets will be provided: current (C), EAT-Lancet (PF) or healthy (H)
- energy_kj_min
Minimal weekly intake of energy, in kJ/g
- energy_kj_max
Maximal weekly intake of energy, in kJ/g
- fat_grams_min
Minimal weekly intake of fat in grams
- fat_grams_max
Maximal weekly intake of fat in grams
- sat_fat_grams_min
Minimal weekly intake of saturated fat in grams
- sat_fat_grams_max
Maximal weekly intake of saturated fat in grams
- CHO_gram_mins
Minimal weekly intake of carbohydrates in grams
- CHO_gram_max
Maximal weekly intake of carbohydrates in grams
- sugars_grams_min
Minimal weekly intake of sugars in grams
- sugars_grams_max
Maximal weekly intake of sugars in grams
- fibre_grams_min
Minimal weekly intake of fibre in grams
- fibre_grams_max
Maximal weekly intake of fibre in grams
- protein_grams_min
Minimal weekly intake of protein in grams
- protein_grams_max
Maximal weekly intake of protein in grams
- sodium_mgrams_min
Minimal weekly intake of sodium in grams
- sodium_mgrams_max
Maximal weekly intake of sodium in grams
- protein_perc_min
Minimal weekly intake of protein in percentage
- protein_perc_max
Maximal weekly intake of protein in percentage
- sat_fat_perc_min
Minimal weekly intake of saturated fat in percentage
- sat_fat_perc_max
Maximal weekly intake of saturated fat in percentage
- fat_perc_min
Minimal weekly intake of fat in percentage
- fat_perc_max
Maximal weekly intake of fat in percentage
- CHO_perc_mins
Minimal weekly intake of carbohydrates in percentage
- CHO_perc_max
Maximal weekly intake of carbohydrates in percentage
- redmeat_grams_min
Minimal weekly intake of red meat in grams
- redmeat_grams_max
Maximal weekly intake of red meat in grams
- fruit_serves_min
Minimal weekly intake of Fruit in serves
- fruit_serves_max
Maximal weekly intake of Fruit in serves
- starchy_veg_serves_min
Minimal weekly intake of Starchy vegetables in serves
- starchy_veg_serves_max
Maximal weekly intake of Starchy vegetables in serves
- veg_serves_min
Minimal weekly intake of Vegetables in serves
- veg_serves_max
Maximal weekly intake of Vegetables in serves
- dairy_serves_min
Minimal weekly intake of Dairy in serves
- dairy_serves_max
Maximal weekly intake of Dairy in serves
- grain_serves_min
Minimal weekly intake of Grains in serves
- grain_serves_max
Maximal weekly intake of Grains in serves
- protein_serves_min
Minimal weekly intake of Protein in serves
- protein_serves_max
Maximal weekly intake of Protein in serves
- sugars_perc_mins
Minimal weekly intake of sugars in percentage
- sugars_perc_max
Maximal weekly intake of sugars in percentage
- alcohol_perc_mins
Minimal weekly intake of Alcohol in percentage
- alcohol_perc_max
Maximal weekly intake of Alcohol in percentage
- discretionary_perc_mins
Minimal weekly intake of Discretionary foods in percentage
- discretionary_perc_max
Maximal weekly intake of Discretionary foods in percentage
- takeaway_perc_mins
Minimal weekly intake of Takeaway in percentage
- takeaway_perc_max
Maximal weekly intake of Takeaway foods in percentage
Source
Elaborated by authors.
Permitted individuals check
Description
Checks if logged individuals are one or all of the following: man, woman, boy or girl.
Usage
permitted_individuals(df)
Arguments
df |
Variable. |
Value
No R object return, performs only a check.
Price/emission data application to random meal plan created
Description
Applies price and emission data calculation to random meal plan generated.
Usage
priceEmissionData(df, emission_cols = NULL)
Arguments
df |
Random meal plan. |
emission_cols |
Optional parameter. Emission column names if standard dataset isn't used. |
Value
Random meal plan with price and emissions calculated.
Exportation of Monte Carlo results
Description
Exports, in .xlsx format, the results of Monte Carlo simulation.
Usage
printResults(file_path, results, person, diet, allowed_varieties, iterations)
Arguments
file_path |
A string containing the path where the file will be saved. |
results |
List of results |
person |
Individual whose random meal plan will be created to. Can be one of man, woman, boy or girl. |
diet |
Chosen diet. Must be DIETNAME from 'constraints_DIETNAME_diet_foods' sheet in dataset. |
allowed_varieties |
Permitted food varieties. Can be a vector of the following: 1,2 and/or 3. |
iterations |
Number of iterations. Integer. |
Value
No R object return, prints a Excel workbook.
Random deletion
Description
Randomly deletes a food.
Usage
random_plan(df, column, condition)
Arguments
df |
Dataframe. |
column |
Column from which decision about removal of values will be made. |
condition |
Condition that, if is true, will enable radom removal. |
Value
Random meal plan
Redmeat flag
Description
Sets a boolean redmeat flag column in dataset.
Usage
redmeat_check(id, redmeat_ids)
Arguments
id |
Food group id column in dataframe. |
redmeat_ids |
Vector of unique food IDs that are redmeat. |
Value
No R object return, performs only a check.
Suffix removal
Description
Removes one of two suffixes from column names
Usage
remove_suffix(vector, suffix_1, suffix_2)
Arguments
vector |
Vector of column names |
suffix_1 |
First suffix to be removed. |
suffix_2 |
Second suffix to be removed. |
Value
Vector of column names without suffixes.
Safe sampling
Description
Safely extracts a random unitary sample from a vector.
Usage
sample_safe(x)
Arguments
x |
Vector. |
Value
Random sample.
Examples
intake <- DIETCOST::sample_safe(c(10,25,37,52,100));
Sauces, protein and discretionary food groups treatment
Description
Treats above said food name groups to the format used in the package.
Usage
sauces_protein_discretionary_change(group)
Arguments
group |
Food group column in dataframe. |
Value
Treated dataframe.
Standard name check
Description
Checks if variable names are the standard defined into DIETCOST R standard table.
Usage
standard_name_check(df, ...)
Arguments
df |
Dataframe. |
... |
Any number of strings. |
Value
No R object return, performs only a check.
Examples
standard_name_check(DIETCOST::foods, 'food_id', 'food_name')
Starchy vegetables serves addition
Description
Adds minimum and maximum serves of starchy vegetables.
Usage
starchy_fill(df, starchy_name, serve_identifier, max_identifier)
Arguments
df |
Dataframe. |
starchy_name |
Starchy vegetables food group name. Default 'Starchy vegetables'. |
serve_identifier |
Serve column identifier. Default 'serve'. |
max_identifier |
Max column identifier. Default 'max'. |
Value
Food group dataframe with starchy vegetable minimum and maximum serves columns added.
Pre-treatment of constraint data
Description
Pre-treatment of constraints dataframe.
Usage
treat_df(df, min_identifier, max_identifier, suffix, max_scale, override_min)
Arguments
df |
Dataframe to be treated. |
min_identifier |
Minimum value column identifier. 'Min' in standard dataset. |
max_identifier |
Maximum value column identifier. 'Max' in standard dataset. |
suffix |
Suffix to be added to column name. |
max_scale |
Maximum scale. Default is two. |
override_min |
If is not null, overrides all minimum values. |
Value
Treated dataframe.
Treatment of food group constraints dataframe
Description
Converts weekly food group serves to daily and adds diet suffix to column names.
Usage
treat_groups_df(df, suffix)
Arguments
df |
Dataframe. |
suffix |
Suffix to be added to column. |
Value
Treated food group dataframe.
Unique value check
Description
Checks if there are non-unique values in dataset.
Usage
unique_values(value, df, value_col, value_name)
Arguments
value |
Column from which an unique vector will be formed. |
df |
Dataframe in which lies the column to be checked. |
value_col |
Name of the column to be checked, in string format. |
value_name |
Name of the variable tested. |
Value
No R object return, performs only a check.
Data upload
Description
Safely uploads data to be processed in DIETCOST software.
Usage
upload_data(filepath, sheet)
Arguments
filepath |
The filepath in which the dataset, in .xlsx format, is saved. |
sheet |
The sheet of the .xlsx to be read. |
Value
The dataframe generated by the file which was read.