複数のデータ型を一度に変更する方法

必要なパッケージの読み込み

library(tidyverse)

データセットの読み込み

データの概要:人の身体測定や食事記録のダミーデータ
変数:ID:対象者ID、sex(性別)、age(年齢)、weight(体重)、height(身長)、BMI、wc(腹囲)、energy(エネルギー摂取量)、protein(たんぱく質摂取量)、proteinE(エネルギー調整済みたんぱく質摂取量、)、carb(炭水化物摂取量)、carbE(エネルギー調整済み炭水化物摂取量)、fat (脂質摂取量)、fatE(エネルギー調整済み脂質摂取量)、alcohol (アルコール摂取量)、smoke (喫煙)

df <- read_csv("demo1.csv")


データセットが読み込めたら、まずglimpse()でデータの構造を確認してみる。

glimpse(df)

データセットの構造を見てみると、いろいろな型の変数が含まれているが、確認するとどの変数も<dbl>(数値型)になっている。

ちなみに、dblは”double”の略で、数値を格納していることを示す。また、細かく言えば <dbl>は、 double-precision floating point number(倍精度浮動小数点数:バイセイドフドウショウスウテンスウ)という小数点を含む数値のことである。

> glimpse(df)
Rows: 200
Columns: 21
$ ID       <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, ~
$ season   <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1~
$ sex      <dbl> 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1~
$ age      <dbl> 25, 64, 65, 28, 30, 59, 53, 57, 59, 54, 74, 61, 32, 60, 27, 65, 51, 30, 42, 81, 33, 51, 41, 50, 43, 30, 48, 76, 40, 36, 30, 70,~
$ weight   <dbl> 80.7, 15.0, 97.3, 110.0, 81.6, 131.4, 94.4, 109.3, 76.2, 67.0, 92.6, 81.0, 87.6, 65.7, 57.3, 61.2, 99.9, 95.3, 98.8, 80.8, 100.~
$ height   <dbl> 171.9, 171.4, 163.4, 162.8, 171.6, 170.1, 160.7, 175.5, 166.2, 171.1, 179.1, 169.7, 178.7, 160.4, 168.7, 165.4, 142.0, 183.6, 1~
$ BMI      <dbl> 27.3, 5.1, 36.4, 41.5, 27.7, 45.4, 36.6, 35.5, 27.6, 22.9, 28.9, 28.1, 27.4, 25.5, 20.1, 22.4, 49.5, 28.3, 34.0, 29.0, 40.1, 42~
$ wc       <dbl> 81.7, 84.4, 125.7, 114.7, 91.8, 127.5, 115.4, 124.7, 100.7, 62.9, 115.9, 102.5, 92.8, 101.8, 75.5, 83.3, 84.4, 100.7, 103.7, 11~
$ energy   <dbl> 1694.7, 965.5, 915.2, 1116.7, 2814.2, 3574.9, 2286.3, 3257.8, 1663.3, 1419.7, 2422.3, 3150.4, 2514.0, 1790.5, 3169.4, 1979.9, 2~
$ protein  <dbl> 147.4, 37.1, 56.7, 43.7, 112.9, 128.0, 59.1, 106.2, 51.8, 54.3, 109.8, 122.1, 96.4, 68.5, 94.9, 70.5, 113.1, 157.2, 104.1, 67.9~
$ proteinE <dbl> 87.0, 38.4, 62.0, 39.2, 40.1, 35.8, 25.8, 32.6, 31.1, 38.3, 45.3, 38.7, 38.4, 38.2, 29.9, 35.6, 41.6, 82.7, 46.1, 34.4, 45.0, 6~
$ carb     <dbl> 139.8, 129.8, 87.5, 161.5, 280.8, 348.8, 398.7, 555.2, 189.6, 187.0, 287.1, 369.4, 317.2, 231.9, 396.4, 299.8, 346.0, 137.7, 18~
$ carbE    <dbl> 82.5, 134.4, 95.6, 144.6, 99.8, 97.6, 174.4, 170.4, 114.0, 131.7, 118.5, 117.3, 126.2, 129.5, 125.1, 151.4, 127.1, 72.4, 80.0, ~
$ fat      <dbl> 31.8, 33.1, 37.6, 32.9, 94.3, 185.3, 50.6, 68.0, 34.0, 50.5, 92.8, 131.6, 95.5, 65.5, 133.8, 44.0, 98.4, 61.0, 124.4, 59.2, 56.~
$ fatE     <dbl> 18.8, 34.3, 41.1, 29.4, 33.5, 51.8, 22.1, 20.9, 20.5, 35.6, 38.3, 41.8, 38.0, 36.6, 42.2, 22.2, 36.1, 32.1, 55.1, 30.0, 48.0, 4~
$ alcohol  <dbl> 36.530, 0.000, 0.000, 0.000, 55.120, 0.000, 0.000, 0.000, 55.120, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 14.495, 0.000, 24.3~
$ smoke    <dbl> NA, 1, NA, NA, NA, 3, 1, NA, 3, 3, 3, 1, 1, NA, NA, 3, NA, NA, NA, 3, NA, NA, NA, 1, NA, NA, NA, 3, 3, 1, NA, NA, NA, NA, NA, N~

数値型から因子型(factor)に変換する(複数同時)

例えば、sex(性別)やsmoke(喫煙)は、数値型ではなく因子型(factor)として扱いたいので変換する。

2つ以上の変数を一度に変換するときは、以下のように入力する。

df[,c("sex", "smoke")] <- lapply(df[,c("sex", "smoke")] , factor)

lapply()を使うことによって、リストまたはベクトルに対して、複数の変数を一括で処理することができる。

ちゃんとデータの型が変換できているか、glimpse() で確認する。

glimpse(df)

sex(性別)やsmoke(喫煙) がfact(因子型)として読み込まれたことが確認できる。

> glimpse(df)
Rows: 50
Columns: 18
$ ID       <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, ~
$ sex      <fct> 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1~
$ age      <dbl> 25, 64, 65, 28, 30, 59, 53, 57, 59, 54, 74, 61, 32, 60, 27, 65, 51, 30, 42, 81, 33, 51, 41, 50, 43, 30, 48, 76, 40, 36, 30, 70,~
$ weight   <dbl> 80.7, 15.0, 97.3, 110.0, 81.6, 131.4, 94.4, 109.3, 76.2, 67.0, 92.6, 81.0, 87.6, 65.7, 57.3, 61.2, 99.9, 95.3, 98.8, 80.8, 100.~
$ height   <dbl> 171.9, 171.4, 163.4, 162.8, 171.6, 170.1, 160.7, 175.5, 166.2, 171.1, 179.1, 169.7, 178.7, 160.4, 168.7, 165.4, 142.0, 183.6, 1~
$ BMI      <dbl> 27.3, 5.1, 36.4, 41.5, 27.7, 45.4, 36.6, 35.5, 27.6, 22.9, 28.9, 28.1, 27.4, 25.5, 20.1, 22.4, 49.5, 28.3, 34.0, 29.0, 40.1, 42~
$ wc       <dbl> 81.7, 84.4, 125.7, 114.7, 91.8, 127.5, 115.4, 124.7, 100.7, 62.9, 115.9, 102.5, 92.8, 101.8, 75.5, 83.3, 84.4, 100.7, 103.7, 11~
$ energy   <dbl> 1694.7, 965.5, 915.2, 1116.7, 2814.2, 3574.9, 2286.3, 3257.8, 1663.3, 1419.7, 2422.3, 3150.4, 2514.0, 1790.5, 3169.4, 1979.9, 2~
$ protein  <dbl> 147.4, 37.1, 56.7, 43.7, 112.9, 128.0, 59.1, 106.2, 51.8, 54.3, 109.8, 122.1, 96.4, 68.5, 94.9, 70.5, 113.1, 157.2, 104.1, 67.9~
$ proteinE <dbl> 87.0, 38.4, 62.0, 39.2, 40.1, 35.8, 25.8, 32.6, 31.1, 38.3, 45.3, 38.7, 38.4, 38.2, 29.9, 35.6, 41.6, 82.7, 46.1, 34.4, 45.0, 6~
$ carb     <dbl> 139.8, 129.8, 87.5, 161.5, 280.8, 348.8, 398.7, 555.2, 189.6, 187.0, 287.1, 369.4, 317.2, 231.9, 396.4, 299.8, 346.0, 137.7, 18~
$ carbE    <dbl> 82.5, 134.4, 95.6, 144.6, 99.8, 97.6, 174.4, 170.4, 114.0, 131.7, 118.5, 117.3, 126.2, 129.5, 125.1, 151.4, 127.1, 72.4, 80.0, ~
$ fat      <dbl> 31.8, 33.1, 37.6, 32.9, 94.3, 185.3, 50.6, 68.0, 34.0, 50.5, 92.8, 131.6, 95.5, 65.5, 133.8, 44.0, 98.4, 61.0, 124.4, 59.2, 56.~
$ fatE     <dbl> 18.8, 34.3, 41.1, 29.4, 33.5, 51.8, 22.1, 20.9, 20.5, 35.6, 38.3, 41.8, 38.0, 36.6, 42.2, 22.2, 36.1, 32.1, 55.1, 30.0, 48.0, 4~
$ alcohol  <dbl> 36.530, 0.000, 0.000, 0.000, 55.120, 0.000, 0.000, 0.000, 55.120, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 14.495, 0.000, 24.3~
$ smoke    <fct> NA, 1, NA, NA, NA, 3, 1, NA, 3, 3, 3, 1, 1, NA, NA, 3, NA, NA, NA, 3, NA, NA, NA, 1, NA, NA, NA, 3, 3, 1, NA, NA, NA, NA, NA, N~

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です