3. データをファイルから読み込むには

3.1. [疑問]

でもねぇ、前節の方法だとデータの人数が増えたら、いちいち続けて手で入力し続けるの? 多くなったら面倒だし、そもそも入力ミスだって避けられない。 何か良い手はないの?

ハイ、あります。ファイルから読み込みましょう。データとプログラムを分離するためにも。

ここでは、中日ドラゴンズの選手の体格を分析することを例に説明します。 なお、以下のリンクをクリックする際にはマウスの右クリックを使って「新しいウインドウで開く」で開くようにしてください。単にクリックするとMoodle内で開いてしまうので非常に見辛くなります。

3.2. データの電子化

今回の例では、データはWeb上に提示されているものの、手元にデータが 存在するわけではない。そこで、これらの選手データをファイルの形で 保存したい。そのためのツールとして、Excelは非常にパワフルなツールだと 考えている。

このWebからデータをもらってきて、Excelに入力ください。

[蛇足] パソコン処理に慣れた方なら、Webの数値群をExcelに コピーペーストで入力できてしまうことをご存知かもしれません。 対面講義であれば、どの程度の人数がそのことをご存知か リアルタイムで確認できるのですが。

ここでは、もう既に電子化したファイルを提供することにします。 Moodleにファイルを保存しておきますので、 各自のPCにダウンロードください。 本来は各自で入力したと想定くださいね。

● Dragons20.xlsx

ファイルを開けてこのサンプルファイルをご覧いただきたいのですが、 ファイルの最初の方に、いくつかの説明が記入されていることが判る。

3.3. ファイルをCSV形式で保存

CSV形式とは、Comma Separated Valueの略で、各値がコンマ区切りの テキストファイルで保存されたファイルを指す。 CSV形式であればRから容易に読み込めるので、この形式でファイルを保存する。Excelで通常の形式(.xlsx)で保存した後、 [ファイル]-[名前をつけて保存]で ウインドウの左下にある[ファイルの種類]に「CSV(コンマ区切り)(.csv)」を選択し保存する。その際、警告ウインドウが表示されることがあるが無視してかまわない。 保存した場所とファイル名を忘れないように。

[演習3.3-1] ドラゴンズの選手データを各自のPCにCSV形式で保存せよ。

  • 以下の例では「Dragons20.csv」という名称で保存したとして説明を続ける。



3.4. Rのホームディレクトリにcsvファイルをコピー

CSV形式で保存したファイル(Dragons20.csv)を Rのホームディレクトリ(各自で異なる)にコピーする。 先週紹介したサイトの例をそのまま踏襲された方は、作業ディレクトリが「Cドライブの中の、R_practiceというフォルダ」としておられると思います。 私は「D:/home_sub3/R_Dir」と指定しているので、 このディレクトリの下に、「Dragons」というディレクトリを作成し、 そこに「Dragons20.csv」をコピーしました。

【余談】本講義では皆さんに「各自で興味あるデータ」の分析を してもらうことをお知らせしています。皆さんが持参されたデータが どのような媒体で持ち込まれるかは判りませんが、例えば本や雑誌といった 紙媒体なら、上記の方法で手入力してCSVファイルの形式にしてください。 また、Web等の電子媒体の場合も、データの形式を整えてCSVファイルを 準備するようにしてください。 電子化する際は本節が役に立つと思います。 お解りにならない方は遠慮なくご質問ください。

来週はこのCSV形式のファイルを既にお手元に用意いただいたという前提で講義を進行することにする。準備を怠らないように。



===== <<10月15日はここから再開(先週掲載の資料に少し加筆してあります)>> =====

3.5. R側から読み込もう

お待たせしました。やっとR側からファイルを読み込む方法をご紹介します。 まず、保存先のディレクトリに移動します。 私はRのホームディレクトリを「D:/home_sub3/R_Dir」と指定しているので、 明示的に移動を示すなら以下の指示を入れます。 RStudioの設定で既に指定してあれば、敢えては必要ありません。

setwd("D:/home_sub3/R_Dir")  # ホームディレクトリに移動(Set Working Directory)
getwd()                      # 現在のディレクトリを表示(Get Working Directory)
## [1] "D:/home_sub3/R_Dir"
list.files()                 # ファイル名一覧
## [1] "Dragons"      "grain"        "KougiDS"      "Unemployment"
setwd("Dragons")             # ディレクトリを移動
list.files()                 # ファイル名一覧
##  [1] "Dragons20.csv"     "Dragons20.xlsx"    "Dragons20_org.csv"
##  [4] "DS02.R"            "DS02_1b.html"      "DS02_1b.Rmd"      
##  [7] "DS02_2b.html"      "DS02_2b.R"         "DS02_2b.Rmd"      
## [10] "DS02_3a.html"      "DS02_3a.pdf"       "DS02_3a.Rmd"      
## [13] "DS02_3c.html"      "DS02_3c.R"         "DS02_3c.Rmd"      
## [16] "DS02_3f.html"      "DS02_3f.Rmd"       "DS02b.R"          
## [19] "DS02c.R"           "DS03_1a.R"         "OldFiles"

ファイルを読み込みます。その際、先頭の6行には説明等の分析に必要ない 情報が書き込まれていますので、読み飛ばす(スキップ)します。 また、それに続く行に変数名が指定されているので「header=TRUE」を 指定しておきます。Excel入力時にこの行を準備してもらったのは このように指定できるからです。この行を準備していない場合は システム側が任意の変数名を付けてくれますが、無味簡素な名称なので、 意味が理解しやすい変数名を自分で付ける方が効率が上がると思います。

ズレがないかを目視で確認します。ただ、ブラウザの都合で漢字の横幅が不均等のためややズレたように見えることをご容赦ください。

Drag20<-read.csv("Dragons20.csv", skip=6, header=TRUE)  # CSVデータの読み込み
Drag20                                                  # データの表示
##    No.             Name     Position  BoY BoM BoD height weight Tou   Da
## 1   11   小笠原 慎之介         投手 1997  10   8    180     95  左   左
## 2   12       田島 慎二         投手 1989  12  21    181     84  右   右
## 3   13       橋本 侑樹         投手 1998   1   8    180     71  左   左
## 4   14       谷元 圭介         投手 1985   1  28    167     72  右   右
## 5   16       又吉 克樹         投手 1990  11   4    181     74  右   右
## 6   17         柳 裕也         投手 1994   4  22    180     85  右   右
## 7   19       吉見 一起         投手 1984   9  19    182     90  右   右
## 8   21       岡田 俊哉         投手 1991  12   5    178     67  左   左
## 9   22       大野 雄大         投手 1988   9  26    183     83  左   左
## 10  24       福谷 浩司         投手 1991   1   9    183     90  右   右
## 11  25         佐藤 優         投手 1993   6  29    187     85  右   左
## 12  28       梅津 晃大         投手 1996  10  24    187     90  右   右
## 13  29       山井 大介         投手 1978   5  10    179     86  右   右
## 14  30     阿知羅 拓馬         投手 1992  11  20    190     95  右   右
## 15  33     祖父江 大輔         投手 1987   8  11    175     80  右   左
## 16  34         福 敬登         投手 1992   6  16    180     88  左   左
## 17  36     岡野 祐一郎         投手 1994   4  16    180     85  右   右
## 18  38       松葉 貴大         投手 1990   8  14    178     82  左   左
## 19  40         石川 翔         投手 1999  12  14    179     81  右   左
## 20  41       勝野 昌慶         投手 1997   6  12    183     89  右   右
## 21  43     三ツ間 卓也         投手 1992   7  22    183     92  右   右
## 22  46       鈴木 博志         投手 1997   3  22    181     95  右   右
## 23  47     笠原 祥太郎         投手 1995   3  17    177     85  左   左
## 24  50       清水 達也         投手 1999  11   3    182     83  右   右
## 25  53       ゴンサレス         投手 1992   1  17    188     93  左   右
## 26  54       藤嶋 健人         投手 1998   5   8    177     85  右   右
## 27  59       山本 拓実         投手 2000   1  31    167     71  右   右
## 28  61       垣越 建伸         投手 2000   4   3    184     96  左   左
## 29  62       竹内 龍臣         投手 2001  12  11    178     77  右   右
## 30  64       小熊 凌祐         投手 1990   8  11    178     84  右   右
## 31  65       伊藤 準規         投手 1991   1   7    187     80  右   左
## 32  67       ロドリゲス         投手 1997   3  10    186     97  右   右
## 33  69       濱田 達郎         投手 1994   8   4    185     95  左   左
## 34  70           ロメロ         投手 1991   1  24    190    103  左   右
## 35  82           マルク         投手 1995   7  18    184     83  右   右
## 36  97 R.マルティネス         投手 1996  10  11    193     93  右   左
## 37  98       木下 雄介         投手 1993  10  10    183     80  右   右
## 38  99       鈴木 翔太         投手 1995   6  16    183     75  右   右
## 39  27       大野 奨太         捕手 1987   1  13    177     78  右   右
## 40  35       木下 拓哉         捕手 1991  12  18    183     92  右   右
## 41  44       郡司 裕也         捕手 1997  12  27    180     86  右   右
## 42  52       加藤 匠馬         捕手 1992   4  29    175     76  右   右
## 43  57 A.マルティネス         捕手 1996   5  28    190     95  右   右
## 44  58       石橋 康太         捕手 2000  12   7    180     87  右   右
## 45  68       桂 依央利         捕手 1991   7   9    185     90  右   右
## 46   0         髙松 渡       内野手 1999   7   2    176     65  右   左
## 47   1       京田 陽太       内野手 1994   4  20    184     88  右   左
## 48   2       石川 昂弥       内野手 2001   6  22    185     93  右   右
## 49   3       高橋 周平       内野手 1994   1  18    180     85  右   左
## 50   5       阿部 寿樹       内野手 1989  12   3    185     80  右   右
## 51   7         根尾 昂       内野手 2000   4  19    177     80  右   左
## 52   9         石川 駿       内野手 1990   5  26    178     82  右   右
## 53  32       石垣 雅海       内野手 1998   9  21    181     85  右   右
## 54  37     三ツ俣 大樹       内野手 1992   5  11    177     84  右   右
## 55  48       溝脇 隼人       内野手 1994   5  17    179     75  右   左
## 56  55       福田 永将       内野手 1988   7  23    181     88  右   右
## 57  63       堂上 直倫       内野手 1988   9  23    184     86  右   右
## 58  66         ビシエド       内野手 1989   3  10    185    108  右   右
## 59   4       藤井 淳志       外野手 1981   5  20    183     82  右 左右
## 60   6       平田 良介       外野手 1988   3  23    177     87  右   右
## 61   8       大島 洋平       外野手 1985  11   9    176     75  左   左
## 62  23       遠藤 一星       外野手 1989   3  23    182     83  右   左
## 63  26       井領 雅貴       外野手 1989  11   4    174     82  右   左
## 64  31         渡辺 勝       外野手 1993  10  14    172     80  右   左
## 65  42       アルモンテ       外野手 1989   6  10    183     98  右 左右
## 66  45           シエラ       外野手 1988   9  24    185    105  右   右
## 67  49       伊藤 康祐       外野手 2000   2   3    174     75  右   右
## 68  51         滝野 要       外野手 1996   7   8    185     76  右   左
## 69  56       武田 健吾       外野手 1994   4  18    183     85  右   右
## 70  60       岡林 勇希       外野手 2002   2  22    175     74  右   左
## 71 201         ブリトー   育成-投手 1996   7  19    185     80  右   右
## 72 202       浜田 智博   育成-投手 1992  10   1    184     80  左   左
## 73 204       丸山 泰資   育成-投手 1995   2   5    176     80  右   右
## 74 206       大藏 彰人   育成-投手 1994   5  15    190     88  右   右
## 75 207       松田 亘哲   育成-投手 1997   5  16    176     80  左   左
## 76 205       石岡 諒太 育成-内野手 1992   5  25    187     90  左   左

[演習3.5-1] 上記の例では、6行スキップしているが、これを3行や10行スキップに変更すると、どのような現象が起きるか、各自で想像した後に実際に確かめてみよ。



データ自身以外に、データのサイズ(行数、列数)や変数名も確認してみましょう。 選手数が76名で、変量数が10個(No., Name, Position, …, height, weight, Tou, Da)のデータであることが判る。 電子化した際のデータが全て正確に読み込まれているか確認せよ。

dim(Drag20)         # データサイズの表示
## [1] 76 10
colnames(Drag20)    # 変量名の表示
##  [1] "No."      "Name"     "Position" "BoY"      "BoM"      "BoD"     
##  [7] "height"   "weight"   "Tou"      "Da"
# 基本情報を外観してみる
str(Drag20)      # データの内容を情報付きで表示(Structure)
## 'data.frame':    76 obs. of  10 variables:
##  $ No.     : int  11 12 13 14 16 17 19 21 22 24 ...
##  $ Name    : chr  "小笠原 慎之介" "田島 慎二" "橋本 侑樹" "谷元 圭介" ...
##  $ Position: chr  "投手" "投手" "投手" "投手" ...
##  $ BoY     : int  1997 1989 1998 1985 1990 1994 1984 1991 1988 1991 ...
##  $ BoM     : int  10 12 1 1 11 4 9 12 9 1 ...
##  $ BoD     : int  8 21 8 28 4 22 19 5 26 9 ...
##  $ height  : int  180 181 180 167 181 180 182 178 183 183 ...
##  $ weight  : int  95 84 71 72 74 85 90 67 83 90 ...
##  $ Tou     : chr  "左" "右" "左" "右" ...
##  $ Da      : chr  "左" "右" "左" "右" ...

これらの結果から、76名、10変量のデータである。 各変量はそれぞれ、文字型(chr)か整数型(int)かが判る。 右側には例示もされている。

そこで、今度は読み込んだデータの一部を閲覧してみましょう。 その際の指定方法は前節で紹介したベクトルや行列の要素位置を明示的に指定する表記方法が使われます。

Drag20[1,]        # 1人目だけの表示
##   No.           Name Position  BoY BoM BoD height weight Tou Da
## 1  11 小笠原 慎之介     投手 1997  10   8    180     95  左 左
Drag20[5,]        # 5人目だけの表示
##   No.       Name Position  BoY BoM BoD height weight Tou Da
## 5  16 又吉 克樹     投手 1990  11   4    181     74  右 右
Drag20[1:10,]     # 先頭10人の選手を表示
##    No.           Name Position  BoY BoM BoD height weight Tou Da
## 1   11 小笠原 慎之介     投手 1997  10   8    180     95  左 左
## 2   12     田島 慎二     投手 1989  12  21    181     84  右 右
## 3   13     橋本 侑樹     投手 1998   1   8    180     71  左 左
## 4   14     谷元 圭介     投手 1985   1  28    167     72  右 右
## 5   16     又吉 克樹     投手 1990  11   4    181     74  右 右
## 6   17       柳 裕也     投手 1994   4  22    180     85  右 右
## 7   19     吉見 一起     投手 1984   9  19    182     90  右 右
## 8   21     岡田 俊哉     投手 1991  12   5    178     67  左 左
## 9   22     大野 雄大     投手 1988   9  26    183     83  左 左
## 10  24     福谷 浩司     投手 1991   1   9    183     90  右 右
Drag20[20:30,]    # 20番目から30番目までの11人の選手を表示
##    No.         Name Position  BoY BoM BoD height weight Tou Da
## 20  41   勝野 昌慶     投手 1997   6  12    183     89  右 右
## 21  43 三ツ間 卓也     投手 1992   7  22    183     92  右 右
## 22  46   鈴木 博志     投手 1997   3  22    181     95  右 右
## 23  47 笠原 祥太郎     投手 1995   3  17    177     85  左 左
## 24  50   清水 達也     投手 1999  11   3    182     83  右 右
## 25  53   ゴンサレス     投手 1992   1  17    188     93  左 右
## 26  54   藤嶋 健人     投手 1998   5   8    177     85  右 右
## 27  59   山本 拓実     投手 2000   1  31    167     71  右 右
## 28  61   垣越 建伸     投手 2000   4   3    184     96  左 左
## 29  62   竹内 龍臣     投手 2001  12  11    178     77  右 右
## 30  64   小熊 凌祐     投手 1990   8  11    178     84  右 右
Drag20[,7]     # 身長を全員分表示(方法1)
##  [1] 180 181 180 167 181 180 182 178 183 183 187 187 179 190 175 180 180 178 179
## [20] 183 183 181 177 182 188 177 167 184 178 178 187 186 185 190 184 193 183 183
## [39] 177 183 180 175 190 180 185 176 184 185 180 185 177 178 181 177 179 181 184
## [58] 185 183 177 176 182 174 172 183 185 174 185 183 175 185 184 176 190 176 187
Drag20$height  # 身長を全員分表示(方法2)
##  [1] 180 181 180 167 181 180 182 178 183 183 187 187 179 190 175 180 180 178 179
## [20] 183 183 181 177 182 188 177 167 184 178 178 187 186 185 190 184 193 183 183
## [39] 177 183 180 175 190 180 185 176 184 185 180 185 177 178 181 177 179 181 184
## [58] 185 183 177 176 182 174 172 183 185 174 185 183 175 185 184 176 190 176 187

4. 初歩的な統計関数

データが準備できましたので、分析していきましょう。 まずは手始めに簡単な統計量から見ていきましょう。

4.1. 基礎統計量

summary(Drag20)         # 要約統計量(一気に全部を表示)
##       No.             Name             Position              BoY      
##  Min.   :  0.00   Length:76          Length:76          Min.   :1978  
##  1st Qu.: 22.75   Class :character   Class :character   1st Qu.:1990  
##  Median : 42.50   Mode  :character   Mode  :character   Median :1993  
##  Mean   : 52.42                                         Mean   :1993  
##  3rd Qu.: 61.25                                         3rd Qu.:1997  
##  Max.   :207.00                                         Max.   :2002  
##       BoM              BoD            height          weight      
##  Min.   : 1.000   Min.   : 1.00   Min.   :167.0   Min.   : 65.00  
##  1st Qu.: 4.000   1st Qu.: 9.00   1st Qu.:178.0   1st Qu.: 80.00  
##  Median : 6.000   Median :16.00   Median :181.0   Median : 85.00  
##  Mean   : 6.368   Mean   :15.34   Mean   :181.2   Mean   : 84.76  
##  3rd Qu.: 9.250   3rd Qu.:22.00   3rd Qu.:184.2   3rd Qu.: 90.00  
##  Max.   :12.000   Max.   :31.00   Max.   :193.0   Max.   :108.00  
##      Tou                 Da           
##  Length:76          Length:76         
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
summary(Drag20$height)  # 要約統計量(指定した変量だけを表示)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   167.0   178.0   181.0   181.2   184.2   193.0
mean(Drag20$height)  # 平均値
## [1] 181.1579
sd(Drag20$height)    # 標準偏差
## [1] 4.953255
table(Drag20$Tou)    # 頻度表(投球腕)
## 
## 右 左 
## 61 15
table(Drag20$Da)     # 頻度表(打席)
## 
##   右   左 左右 
##   46   28    2
table(Drag20$Tou, Drag20$Da)   # 頻度表(2次元)
##     
##      右 左 左右
##   右 44 15    2
##   左  2 13    0

[演習4.1-1] 上記では、離散変量(投球腕、打席)の頻度を集計した。連続変量(身長、体重)の頻度を取るとどうなると予想されるか?



table(Drag20$height)
## 
## 167 172 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 190 193 
##   2   1   2   3   4   6   5   3   8   5   3  10   5   8   1   4   1   4   1

[答え] 連続変量の個々の値の頻度が表示される。 これは我々が求めている結果であろうか? もし、ある区切り幅の中に 含まれる人数を頻度として調べたいのであれば、 区切り幅を指定する必要がある。以下では165cmから5cm刻みで 195cmまでの各区間に含まれる頻度を表示している。

category_height<-cut(Drag20$height,
                     breaks=seq(165,195,5), right=FALSE)
table(category_height)
## category_height
## [165,170) [170,175) [175,180) [180,185) [185,190) [190,195) 
##         2         3        21        31        14         5

区間の左側が閉区間、右側が開区間になっているのが、 カッコの違いで理解できる。 デフォルトでは右側が閉区間になってしまうので、 「right=FALSE」を指定して、右側を開区間とすることを指定している。

4.2. 視覚的表現: 樹葉図、ヒストグラム、箱ひげ図

stem(Drag20$height)               # 樹葉図(Stem and Leaf)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   16 | 77
##   17 | 244
##   17 | 555666677777788888999
##   18 | 0000000011111222333333333344444
##   18 | 55555555677778
##   19 | 00003

樹葉図は電車の時刻表のような表示形式である。 一の位の内容が目視できて便利に感じる。

hist(Drag20$height, right=FALSE)  # ヒストグラム

hist(Drag20$height, breaks = seq(160,200,10), 
     ylim=c(0,50), right=FALSE)                # 区切りを指定
abline(h=seq(0,50,10), lty=3)                  # 点線を追記

ヒストグラムもデフォルトでは意図通りの区切りになっていないのであれば、こちらから陽に指定することができる。 また読み易さの観点から、点線を追記してある。 lty(点線, Line Typeか)にはいくつか種類があり、 補助線の場合は3番が適当ではないか?

[演習4.2-1] 「right=FALSE」を外すとどのようなグラフになるか、試してみよ。このオプションは何の目的で指定されていると想像されるか? また、点線もいくつかの種類が用意されているので、数値を変えてどのような点線が表示されるか確かめてみよ。



boxplot(Drag20$height)                   # 縦方向に箱ひげ図

boxplot(Drag20$height, horizontal=TRUE)  # 横方向に箱ひげ図
abline(v=seq(170,190,5), lty=3)          # 点線を追記

横方向に伸びる箱ひげ図を表示したい場合は、「horizontal=TRUE」を指定する。なお、「TRUE」は真偽の「真」であり、デフォルトでは偽(FALSE)となっているため陽に指定する必要がある。また、それぞれは「T」、「F」と短縮して指定してもかまわない。

[演習4.1-2] 選手の体重データに対して各自で分析してみよ。



4.3. 2次元のデータに対しては: 散布図、相関係数

plot(Drag20$height,Drag20$weight)  # 散布図
abline(v=seq(160,200,5),lty=3)     # 点線を追記
abline(h=seq(70,100,10),lty=3)     # 点線を追記

cor(Drag20$height,Drag20$weight)   # 相関係数
## [1] 0.6119032
# setwd(”../”)  # ホームディレクトリに移動

【思い】このページではRからデータを読み込む方法の修得と、統計処理に慣れてほしい。

88. 参考

このページで取り扱ったプログラムだけを抜き出して以下に列挙しておく。

setwd("D:/home_sub3/R_Dir")  # ホームディレクトリに移動(Set Working Directory)
getwd()                      # 現在のディレクトリを表示(Get Working Directory)
list.files()                 # ファイル名一覧
setwd("Dragons")             # ディレクトリを移動
list.files()                 # ファイル名一覧

Drag20<-read.csv("Dragons20.csv", skip=6, header=TRUE)  # CSVデータの読み込み
Drag20

dim(Drag20)         # データサイズの表示
colnames(Drag20)    # 変量名の表示
str(Drag20)      # データの内容を情報付きで表示(Structure)

Drag20[1,]        # 1人目だけの表示
Drag20[5,]        # 5人目だけの表示
Drag20[1:10,]       # 先頭10人の選手を表示
Drag20[20:30,]      # 20番目から30番目までの11人の選手を表示
Drag20[seq(1,10),]  # 先頭10人の選手を表示(別表現)
Drag20[seq(20,30),] # 20番目から30番目までの11人の選手を表示(別表現)
Drag20[,7]     # 身長を全員分表示(方法1)
Drag20$height  # 身長を全員分表示(方法2)

summary(Drag20)         # 要約統計量(一気に全部を表示)
summary(Drag20$height)  # 要約統計量(指定した変量だけを表示)
mean(Drag20$height)  # 平均値
sd(Drag20$height)    # 標準偏差
table(Drag20$Tou)    # 頻度表(投球腕)
table(Drag20$Da)     # 頻度表(打席)
table(Drag20$Tou, Drag20$Da)   # 頻度表(2次元)

table(Drag20$height)
category_height<-cut(Drag20$height,
                     breaks=seq(165,195,5), right=FALSE)
table(category_height)

stem(Drag20$height)               # 樹葉図(Stem and Leaf)
hist(Drag20$height, right=FALSE)  # ヒストグラム
hist(Drag20$height, breaks = seq(160,200,10), 
     ylim=c(0,50), right=FALSE)                # 区切りを指定
abline(h=seq(0,50,10), lty=3)                  # 点線を追記

boxplot(Drag20$height)                   # 縦方向に箱ひげ図
boxplot(Drag20$height, horizontal=TRUE)  # 横方向に箱ひげ図
abline(v=seq(170,190,5), lty=3)          # 点線を追記

plot(Drag20$height,Drag20$weight)  # 散布図
abline(v=seq(160,200,5),lty=3)     # 点線を追記
abline(h=seq(70,100,10),lty=3)     # 点線を追記
cor(Drag20$height,Drag20$weight)   # 相関係数

setwd(”../”)  # ホームディレクトリに移動