Rで栄養計算(2)

「FoodCompositionJapan」パッケージで日本食品標準成分表を利用する方法をまとめています。

日本食品標準成分表を利用する

日本食品標準成分表のデータを利用するための関数を紹介していきます。

栄養素名を取得する

栄養素名の取得には、getNutrientNames()関数を用います。

## 栄養素名を取得する

日本食品標準成分表から栄養素名を取得します。

```{r}

nutrient_names = getNutrientNames()

head(nutrient_names)

```

nutrient_namesには、63の栄養素項目が付値されます。上記コードでは、下記の通り、最初の6つが表示されます。

> head(nutrient_names)
[1] "Refuse (%)"
[2] "Energy (kcal)"
[3] "Energy (kJ)"
[4] "Water (g)"
[5] "Protein, calculated from reference nitrogen (g)"
[6] "Protein, calculated as the sum of amino acid residues (g)"

食品群一覧を取得する

食品群一覧の取得には、getFoodGroups()関数を用います。

## 食品群一覧を取得する

日本食品標準成分表から食品群一覧を取得します。

```{r}

food_groups = getFoodGroups()

head(food_groups)

```

food_groupsには、18の食品群が付置され、上記コードで最初の6つが表示されます。

> head(food_groups)
[1] "1 Cereals" "2 Potatoes and starches" "3 Sugars and sweeteners"
[4] "4 Pulses" "5 Nuts and seeds" "6 Vegetables"

食品を検索する

食品を検索するには、findFood()関数を用います。

## 食品を検索する

日本食品標準成分表から食品を検索する。

```{r}

ret01 = findFood(

 keyword = "oil",

 food_group = "14 Fats and oils"

)

```

  • keyword: 検索したい食品名を指定する引数で、部分一致で検索されます。
  • food_group: 検索先の食品群を指定します。指定がない場合は、すべての食品群から検索します。

food_groupの指定には、トラブルを避けるため、下記のようにgetFoodGroups()関数を利用した方が良いでしょう。

```{r}

ret01 = findFood(

 keyword = "oil",

 food_group = getFoodGroups()[14]

)

```

> head(names(ret01))
[1] "food_group" "item_no" "index_no"
[4] "food_and_description" "Refuse (%)" "Energy (kcal)"

検索した結果は、データテーブル形式とデータフレーム形式になっています。食品名は、food_and_descriptionに格納されているようです。上記コードでは、格納されている変数のうち、最初の6つだけを表示していますが、「names(結果を格納した変数名)」で、全ての変数名が表示されます。

栄養素量の多い食品を抽出する

栄養素量の多い食品を抽出するには、subsetFoodRichIn()関数を用います。

栄養素量の多い食品を抽出する

栄養素量の多い食品を抽出する方法です。

```{r}

subset_drink = subsetFoodRichIn(

 nutrient_name = 'Carbohydrate, total, calculated by difference (g)',

 food_group = "16 Beverages",

 n = 10

)

```

  • nutrient_name: 栄養素名を指定します。
  • food_group: 検索したい食品群を指定します。指定がなければ、すべての食品群から検索します。
  • n: 取得したい食品の数を整数で指定します。

nutrient_nameの指定には、getNutrientNames()関数を、food_groupの指定には、getFoodGroups()関数を用いた方が無難に思えます。

```{r}

subset_drink = subsetFoodRichIn(

 nutrient_name = getNutrientNames()[13],

 food_group = getFoodGroups()[16],

 n = 10

)

```

> subset_drink$food_and_description
[1] "Cocoa, chocolate milk powder"
[2] "Kale juice, powder"
[3] "Coffee, instant coffee, granules"
[4] "Fermented tea, black tea, tea"
[5] "Compound alcoholic beverage, \"Shiro0zake\" white Sake0like liquor made from steamed rice, rice koji and \"Shochu\""
[6] "Green tea, \"Sencha\" common grade tea, tea"
[7] "Green tea, \"Gyokuro\" high grade tea made from shade0grown leaves, tea"
[8] "Compound alcoholic beverage, \"Mirin\" sweet liquor made from rice, rice koji and Shochu or distilled alcohol, regular"
[9] "Cocoa, pure powder"
[10] "\"Kobu0cha\" kombu powder for drink"

> subset_drink$`Carbohydrate, total, calculated by difference (g)`
[1] 80.4 70.2 56.5 51.7 48.1 47.7 43.9 43.2 42.4 42.3

取得したものは、やはりデータフレーム(データテーブル)形式なので、上記のように呼び出すことができます。 ただし、変数名に空白が含まれているものは、「`(バッククオート)」で変数名を囲む必要があります。 バッククオートは普通のキーボードであれば、「Shift + @」で入力可能です。

表示したい変数だけ抜き出す場合は、以下のようなやり方が一般的です。

```{r}

col_list = c('food_and_description', 'Carbohydrate, total, calculated by difference (g)')

subset_drink_selected = subset_drink[, col_list]

```