R言語で日本食品標準成分表を使えるパッケージを作成しました

R言語

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

以前の記事で「NutrienTrackeR」という,USDAなどの食品成分表を利用できるRのパッケージを紹介しました.
食品の栄養価計算や,食事ガイドラインに合わせた栄養評価が行える便利なパッケージでした.

ただし,残念なことに日本の食品成分表は含まれていません.

そこで,公表されている日本食品標準成分表を利用し,Rでもそれを使えるように基本的な関数とともに公開しました.
今回はそれを紹介したいと思います.

パッケージの使い方

パッケージは,Githubに公開しています.

これをダウンロードし,使っていきます.
devtoolsというライブラリを使用しすると便利です.以下のコードでダウンロード・インストールをします.

library(devtools)
install_github("yuki-shinno/FoodCompositionJapan")
library(FoodCompositionInJapan)

これで日本食品標準成分表が使えるようになります.

なお,「関数なんかいらない!食品標準成分表だけ欲しい!」って方は,こちらからデータのみダウンロードされると良いかと思います.

加えて,まだパッケージとして体裁が整っていないため,CRAN経由ではダウンロードできません.おいおい,対応できればなと思っています.

日本食品標準成分表について

では,さっそく食品標準成分表を使ってみましょう.以下のコードを実行するとfood_compositionに日本食品標準成分表のデータが代入されます:

data("food_composition")

試しに,少し開いてみます:

このような形で入力されています.

Rで日本語の文字列(2バイト文字)を扱うのは賢明でないので,英語版の日本食品標準成分表のデータを利用しています.

なお,こちらの食品標準成分表は追補には対応していません.また,Trや推定値なども全て通常の値に変換してあります.それらの点をお含みおきの上,ご利用ください.

基本的な関数

いくつか関数を作成しました.
これも,パッケージをインストールすると使えるようになります.

getNutrientNames():栄養素名を取得する

栄養素名の一覧を取得する関数です.以下のように使用します:

nutrient_names <- getNutrientNames()

以下のベクトルが返されます:

> print(nutrient_names)
 [1] "Refuse (%)"                                                           
 [2] "Energy (kcal)"                                                        
 [3] "Energy (kJ)"                                                          
・・・
[61] "Cooking oil (g)"                                                      
[62] "Organic acids, total (g)"                                             
[63] "Yield (%)"

全部で63の栄養素項目が含まれます.他の関数で栄養素名を利用することがありますので,その際などに参照してください.

getFoodGroups():食品群一覧を取得する

食品群の一覧を取得する関数です.以下のように使用します:

food_groups <- getFoodGroups()

実行すると18の食品群の含まれたベクトルが返されます:

> print(food_groups)
 [1] "1 Cereals"                         "2 Potatoes and starches"          
 [3] "3 Sugars and sweeteners"           "4 Pulses"                         
 [5] "5 Nuts and seeds"                  "6 Vegetables"                     
 [7] "7 Fruits"                          "8 Mushrooms"                      
 [9] "9 Algae"                           "10 Fish, mollusks and crustaceans"
[11] "11 Meat"                           "12 Eggs"                          
[13] "13 Milk and milk products"         "14 Fats and oils"                 
[15] "15 Confectionaries"                "16 Beverages"                     
[17] "17 Seasonings and spices"          "18 Prepared foods"

この食品群も,他の関数で利用する事があるかと思いますので,その際に参照してください.

findFood():食品を検索する

食品を検索する関数です.以下のように使用します:

ret <- findFood(
  keyword = "oil",
  food_group = "14 Fats and oils"
)
  • keyword:検索したい食品名を指定します."oil" のように文字列で指定してください.検索は部分一致で行われます.
  • food_group:検索したい食品群を指定します.デフォルトではNULLなので全ての食品群から検索します."14 Fats and oils" のように食品群名で指定してください.食品群名の一覧はgetFoodGroup()で取得できますので参照してください.

結果は以下のようにマトリックス形式で返ってきます:

食品名が知りたい場合は以下のように食品名にアクセスします:

> food_names <- ret$food_and_description
> print(food_names)
 [1] "Linseed oil[*Syn. Flaxseed oil]" "Perilla oil"                      
 [3] "Olive oil"                         "Sesame oil"                       
 [5] "Rice bran oil"                     "Safflower oil, high oleic"        
 [7] "Safflower oil, high linoleic"      "Soybean oil"                      
 [9] "Vegetable oil, blend"              "Corn oil"                         
[11] "Rapeseed oil"                      "Palm oil"                         
[13] "Palm kernel oil"                   "Sunflower oil, high linoleic"     
[15] "Sunflower oil, mid0oleic"          "Sunflower oil, high oleic"        
[17] "Grape seed oil"                    "Cottonseed oil"                   
[19] "Coconut oil"                       "Peanut oil"

subsetFoodRichIn():栄養素量の多い食品を抽出する

栄養素含有量の多い食品を抽出する関数です.以下のように使用します:

subset_drink <- subsetFoodRichIn(
  nutrient_name = 'Carbohydrate, total, calculated by difference (g)',
  food_group = "16 Beverages",
  n = 10
)
  • nutrient_name:栄養素名を指定します.'Carbohydrate, total, calculated by difference (g)' のように文字列で指定してください.なお,栄養名一覧はgetNutrientNames()で取得できますので参照してください.
  • food_group:検索したい食品群を指定します.デフォルトではNULLなので全ての食品群から検索します."16 Beverages" のように食品群名で指定してください.食品群名の一覧はgetFoodGroup()で取得できますので参照してください.
  • n:取得したい食品の数を指定します.デフォルトでは10です.整数で指定してください.

実行すると,以下のようなマトリックスが得られます:

もし,食品名と栄養素名の一覧のみを表示したいのであれば,以下のようにします:

col_list = c('food_and_description','Carbohydrate, total, calculated by difference (g)')
select <- subset_drink[, col_list]

まとめ

今回はRで日本の食品標準成分表が使えるようになるパッケージの紹介をしました.まだまだ機能が不足しているところがあるので,また機能の追加などをしていきたいと思います.加えて,パッケージとしての体裁(ドキュメントなど)も整っていないので,それを行えるようにしたいと思います.

連載目次

  1. R言語で日本食品標準成分表を使えるパッケージを作成しました現在のページ
  2. 【機能追加】R言語 × 日本食品標準成分表に栄養計算機能を追加しました
  3. 【機能追加】R言語 × 日本食品標準成分表に食事データ作成に便利な関数を追加しました
タイトルとURLをコピーしました