R言語でUSDAの食品成分表が使える「NutrienTrackeR」の基本的な使い方と機能を紹介

R言語

みなさん,こんにちは.
シンノユウキ(y_stadio)です.

今回はR言語で栄養価計算が行える:NutrienTrackeRを紹介します.全部で3カ国の食品成分表を使用でき,食事ガイドラインに準じた評価も可能です.

日本の食品成分表が使用できないためか,検索してみても日本語の情報が殆ど出てきません(というか英語もほぼない).なので,英語の公式ドキュメントを参照しつつ,日本語でできるだけわかりやすく紹介したいと思います.

では行きましょう!

「NutrienTrackeR」とは?

NutrienTrackeR」はR言語でUSDAなどの食品成分表を用いて栄養価計算ができるツールです.インペリアル・カレッジ・ロンドンの研究員:Andrea Rodriguez-Martinez博士らによって作成されました.

食品成分表や食事アセスメントに必要な情報が含まれます.USDAを含めて,以下の3つの食品成分表を利用できます:

  • USDA(米国)
  • CIQUAL(フランス)
  • BEDCA(スペイン)

残念ながら日本の食品標準成分表は利用できません.ご注意ください.

公式ページは以下です:

より詳しいドキュメントはPDF形式で以下に公開されています.

インストール

では,さっそく使っていきましょう.
「NutrienTrackeR」はパッケージ化されCRANで公開されています.インストールし,ライブラリとしてロードします.

install.packages("NutrienTrackeR")
library(NutrienTrackeR)

Rのバージョンは3.5以上が必要になります.
必要な場合はバージョンアップしてください.

これで準備は完了です.

使える関数一覧

では,ここからは「NutrienTrackeR」で行えることを関数を中心に紹介していきます.

dietBalance:食事評価を行う

dietBalance関数を使うことで栄養計算・食事評価が可能になります.このパッケージの主要機能と言えるでしょう.栄養計算した結果とRDA(推奨量)における充足率などを返します.以下のように使用します:

weekly_balance <- dietBalance(
  my_daily_food = sample_diet_USDA,
  food_database = "USDA",
  age = 27,
  gender = "female",
  pregnant = FALSE,
  lactation = FALSE,
  summary_report = TRUE
)

引数は以下です:

  • my_daily_food:食事の内容を指定します.foodunitsから構成されるマトリックスのリスト(日数)で指定します.foodは食品名,unitsは100gを1とした数値で指定します.初期状態でsample_diet_USDAという1週間分の食事データが用意されています.少し試してみたいという程度であればこちらを利用されると良いでしょう.
  • food_database:栄養計算に使用する食品成分表を指定します.次の3つから選択できます:"USDA""CIQUAL""BEDCA".
  • age:基準値を算出するための年齢です.27のように整数で指定します.
  • gender:基準値を算出するための性別です."female""male"で指定します.
  • pregnant:基準値を算出するための妊娠の有無を指定します.TRUEFALSEで指定します.当然ですが,妊娠している場合はTRUEです.
  • lactation:基準値を算出するための授乳の有無を指定します.TRUEFALSEで指定します.授乳をしている場合はTRUEです
  • summary_report:簡単なレポートを出力するかを指定します.TRUEFALSEで指定します.

試しに表示したサンプルコードを実行してみます.sample_diet_USDAは7日間の食事が収載されていますので,結果は7日間の平均として出力されます.以下のように出力されます:

The results correspond to an average of 7 days
Total energy intake (kcal): 1795
The intake level of the following nutrients is below the RDA:
                            nutrient proportion(%RDA)         group
1                          Water (g)         30.97156 macronutrient
2                   Calcium, Ca (mg)         58.25710       mineral
3                    Sodium, Na (mg)         59.84527       mineral
4                  Potassium, K (mg)         67.10106       mineral
5                      Iron, Fe (mg)         99.56111       mineral
6           Vitamin D (D2 + D3) (ug)         11.28667       vitamin
7  Vitamin E (alpha-tocopherol) (mg)         31.04000       vitamin
8                Vitamin A, RAE (ug)         45.67343       vitamin
9                Choline, total (mg)         85.32682       vitamin
10                  Folate, DFE (ug)         96.62500       vitamin
The intake level of the following nutrients is above the TUIL:
            nutrient proportion(%RDA)   group
1 Magnesium, Mg (mg)         223.7326 mineral
2 Manganese, Mn (mg)         643.8333 mineral

7日間平均の総エネルギー摂取量(Total energy intake (kcal))と,10個の栄養素における推奨量の充足率(proportion(%RDA) ),耐用上限量(TUIL)の指定されている2個の栄養素は別に表示されます.

もっと詳しい値が必要な場合は,返されたリストを詳しく見る必要があります:

weekly_balance$nutrient_intake
weekly_balance$food_contribution
weekly_balance$diff_intake
  • $nutrient_intake:食品成分表に掲載されている栄養素摂取量の配列を取得できます:

  • $food_contribution:食品群別に各栄養素への寄与率を算出できます.(これがなかなか良い機能だと思います)

  • $diff_intake:各栄養素のRDAに対する充足率のリストを取得できます:

nutrientIntakePlot:棒グラフで栄養素摂取量を表示する

nutrientIntakePlot関数を使うことで,推奨量の充足率を棒グラフで表示させることができます.以下のように使用します:

weekly_balance <- dietBalance(
  my_daily_food = sample_diet_USDA,
  food_database = "USDA",
  age = 27,
  gender = "female"
)
nutrientIntakePlot(
  daily_intake = weekly_balance,
  color_scale = c("blue", "green", "red")
)

こちらの関数は先に紹介したdietBalance関数の返り値を利用します.引数は以下のようになります:

  • daily_intake:関数dietBalanceの返り値を指定します.
  • color_scale:棒グラフの色を指定します.c("blue", "green", "red") のように文字列のベクトルで指定します.全部で3つの色を指定でき,1つ目:macronutrient,2つ目:mineral,3つ目:vitaminの色を指定します.

上記のコードを実行すると以下のようになります:

nutrientPiePlot:円グラフで栄養素摂取量を表示する

棒グラフの次は円グラフです.nutrientPiePlot関数を使うことで特定の栄養素における食品群別の寄与率を示すことができます.以下のように使用します:

weekly_balance <- dietBalance(
  my_daily_food = sample_diet_USDA,
  food_database = "USDA",
  age = 27,
  gender = "female"
)

nutrientPiePlot(
  daily_intake = weekly_balance,
  nutrient_name = "Protein (g)",
  n = 10
)

こちらの関数も先に紹介したdietBalance関数の返り値を利用します.全体的な引数は以下のようになります:

  • daily_intake:関数dietBalanceの返り値を指定します.
  • nutrient_name:表示したい栄養素を指定します."Protein (g)"のように文字列で指定します.なお,栄養素の一覧はgetNutrientNames(food_database = "USDA")で取得できますので,参考にしてください.
  • n:表示させたい食品群の数を指定します.10と指定した場合,含有量の上位10件を取得が表示され,それ以外は Others になります.

上記のコードを実行すると以下のような円グラフを描くことができます:

なお,こちらの円グラフはggplot2を用いて描かれていますので,フォントサイズの指定やその他のカスタマイズも比較的自由に行うことができます.

nutrientsTimeTrend:栄養素摂取レベルを時系列で表示する

nutrientsTimeTrend関数を使うことで,栄養素摂取量の時系列を描くことができます.以下のように使用します:

nutrientsTimeTrend(
  my_daily_food = sample_diet_USDA,
  food_database = "USDA",
  nutrients = c("Calcium, Ca (mg)", "Iron, Fe (mg)"),
  age = 27,
  gender = "female",
  pregnant = FALSE,
  lactation = FALSE
)

引数のうち,nutrients以外はdietBalance関数と同様ですので,そちらも合わせてご覧ください.

  • nutrients:時系列で表示したい栄養素を指定します.複数指定でき,c("Calcium, Ca (mg)", "Iron, Fe (mg)")のように栄養素名のベクトルで指定します.

上記のコードを実行すると以下のようなタイムラインが表示されます.

こちらも円グラフと同様にggplot2で作成されていますので,カスタマイズが可能です.

findFoodName:食品を検索する

findFoodName関数を使うことで,食品成分表からキーワードに合致する食品を取得できます.以下のように使用します:

result <- findFoodName(
  keywords = "olive",
  food_database = "USDA",
  food_group = "Fats and Oils",
  ignore_case = FALSE
)

引数は以下のようになります:

  • keywords:検索したいキーワードを文字列で指定します."olive"のようにします.
  • food_database:栄養計算に使用する食品成分表を指定します.次の3つから選択できます:"USDA""CIQUAL""BEDCA".
  • food_group:特定の食品群から検索したい場合に指定します.食品群を指定する場合,"Fats and Oils"のようにします.指定しない場合はNULLでOKです.なお,どのような食品群があるかわからないという場合,getFoodGroups(food_database = "USDA")のようにすることで,指定した食品成分表の食品群一覧を取得できますので参考にしましょう.
  • ignore_case:検索の際,大文字と小文字を区別するかを指定します.TRUEの場合は区別せず(同一視する),FALSEの場合は区別します.

上記のコードを実行すると以下のような結果を得ることができます:

4053
"Oil, olive, salad or cooking"
4708
"Mayonnaise, reduced fat, with olive oil" 
44005
"Oil, corn, peanut, and olive"

subsetFoodRichIn:栄養素含有量の多い食品を選択する

subsetFoodRichIn関数を使うことで,食品成分表からキーワードに合致する食品を取得できます.以下のように使用します:

result <- subsetFoodRichIn(
  nutrient_name = "Protein (g)",
  food_database = "USDA",
  food_group = "Beef Products",
  n = 10
)

引数は以下のようになります:

  • nutrient_name:含有量の多い食品を抽出したい栄養素を指定します."Protein (g)"のように文字列で指定します.なお,栄養素の一覧はgetNutrientNames(food_database = "USDA")で取得できますので,参考にしてください.
  • food_database:栄養計算に使用する食品成分表を指定します.次の3つから選択できます:"USDA""CIQUAL""BEDCA".
  • food_group:特定の食品群から検索したい場合に指定します.食品群を指定する場合,"Fats and Oils"のようにします.指定しない場合はNULLでOKです.なお,どのような食品群があるかわからないという場合,getFoodGroups(food_database = "USDA")のようにすることで,指定した食品成分表の食品群一覧を取得できますので参考にしましょう.
  • n:抽出する食品の数を指定します.10と指定した場合,含有量の上位10件を取得できます.

上記のサンプルコードを実行すると以下のようなマトリックスを得ることができます:

まとめ

今回は栄養計算用のRパッケージ:「NutrienTrackeR」の概要や基本的な使い方を紹介しました.他にも面白いパッケージあがあれば使いたいですね.参考になれば!

この記事の著者
管理栄養士/修士(人間生活化学)

シンノユウキです。管理栄養士/修士(人間生活科学)/ 栄養系の出版社で勤務/ 会社員ブロガーです.科学的に正しくかつ妥当なことをお伝えしていきます.プログラミングが趣味なので関連記事も書いています.

シンノユウキをフォローする
R言語栄養統計
シンノユウキをフォローする
みんな栄養に頼りすぎてる
タイトルとURLをコピーしました