みなさん,こんにちは。
シンノユウキ(shinno1993)です。
以前の記事で「NutrienTrackeR」という,USDAなどの食品成分表を利用できるRのパッケージを紹介しました.
食品の栄養価計算や,食事ガイドラインに合わせた栄養評価が行える便利なパッケージでした.
ただし,残念なことに日本の食品成分表は含まれていません.
そこで,公表されている日本食品標準成分表を利用し,Rでもそれを使えるように基本的な関数とともに公開しました.
今回はそれを紹介したいと思います.
パッケージの使い方
パッケージは,Githubに公開しています.
これをダウンロードし,使っていきます.
devtoolsというライブラリを使用しすると便利です.以下のコードでダウンロード・インストールをします.
library(devtools) install_github("yuki-shinno/FoodCompositionJapan", force=TRUE) library(FoodCompositionJapan)
これで日本食品標準成分表が使えるようになります.
なお,「関数なんかいらない!食品標準成分表だけ欲しい!」って方は,こちらからデータのみダウンロードされると良いかと思います.
加えて,まだパッケージとして体裁が整っていないため,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で日本の食品標準成分表が使えるようになるパッケージの紹介をしました.まだまだ機能が不足しているところがあるので,また機能の追加などをしていきたいと思います.加えて,パッケージとしての体裁(ドキュメントなど)も整っていないので,それを行えるようにしたいと思います.
連載目次
- R言語で日本食品標準成分表を使えるパッケージを作成しました現在のページ
- 【機能追加】R言語 × 日本食品標準成分表に栄養計算機能を追加しました
- 【機能追加】R言語 × 日本食品標準成分表に食事データ作成に便利な関数を追加しました