2. 第2回 R言語の基礎

open in colab

2.1. はじめに

R は、数値計算(ベクトルや行列の計算)や、統計解析、機械学習(Machine Learning)、深層学習(Deep Learning)、グラフ描画など、データ解析が得意なプログラミング言語になります。

データ解析の研究者でなくても、実験データなどの統計解析を行う際に最も使用されているプログラミング言語の1つです。

そこで、本講義では学んだ統計処理を、Rで実行するための実習も行っていきます。

このテキストでは、実習に必要な最低限のRの基礎知識を学んでいきます。

より高度な使い方等を知りたい方は、別途学習してみてください。

2.2. 実習に入る前に

本講義では講義資料としてGoogle Colaboratoryで記述されたものを共有しています。

Google Colaboratoryは、web上でプログラミングをおこなことが可能な便利なサービスです。名称からわかるとおり、Google社が提供しているサービスになります。 基本的にPythonを動かすことが多いですが、今回の講義ではRを動かすのに使用しています。

colab_server

本講義ではGoogle ColaboratoryでRを動かしますが、実際に実験データ等を統計処理する場合には、自分のPCにRを入れて動かすことが多いです。

より実際に近い状況で実習を行いたい場合は、自分のPCにRを入れて動かしていただいても構いませんし、

こちらが提供しているGoogle Colaboratoryで動かしていただいても、どちらでも構いません。

ただし、今後出す予定の課題はGoogle Colaboratoryを使用して提出する必要があるので、使用方法は理解しておいてください。

2.2.1. Rのインストール方法 (自分のPCで動かしたい人向け)

Rを自分のPCに入れて動かしたい人は、下記の手順でRをインストールしてみてください。

  1. R のホームページに行きます。

  2. download Rのページへ移動

  3. 適当なミラーサイトを選択( https://cloud.r-project.org/ でOK)

  4. 自分のOSのリンク先へ移動

  5. baseをクリックしてインストーラーをダウンロード

  6. ダウンロードしたファイルを開いてあとは指示通りに

title

また、Rを使う際には、Rstudioという開発環境(Rを使いやすくするツール)を使用することが多いです。

もし、Rを自分のPCに入れて動かす予定の方はRstudioも一緒に入れて使う様にすると良いと思います。

Rstudioのインストールも同じように、

  1. Rstudioのホームページに行きます。

  2. 少し下の方にあるInstall Rstudioという所にある、Download RStudio Desktop for XXX(自分のOS)というボタンをクリックしてインストーラーをダウンロード

  3. ダウンロードしたファイルを開いてあとは指示通りに

title

2.2.2. Google Colaboratoryの使い方 - Rのコードを動かす方法

Google ColaboratoryでRのコードを書いて動かすには、左上にある +コードでコード記述用のセルを追加し、そこにRのコードを書いていきます。

title

コードセルは左側の三角ボタンを押すか、Shift+Enterで選択中のセル内のコードを動かすことができます。

title

自分のPCでRを動かしている方はRを起動してコンソールにコードを打ち込み、Enterをすればコードが動きます。

まずは適当な足し算(7 + 8等)を書いてみて動かしてみましょう。

Google Colaboratoryで最初にコードを動かす際には接続するために少し時間がかかります(以降はすぐ実行できます)。

[1]:
7 + 8
15

引き算(7 - 3)や掛け算(2 * 5)、割り算(78 / 13)なども可能です。

[2]:
7 - 2
5
[3]:
2 * 5
10
[4]:
78 / 13
6

累乗も計算できます。Rで累乗を計算するには^を使います。

例えば2の10乗を計算する場合は2^10になります。

[5]:
2^10
1024

2.3. 関数

次にRで使用可能な関数を使用します。

関数というのは、与えた値に何らかの処理をして結果返してくれるものです。

まずはsqrtという平方根を求めることが出来る関数を使ってみます。

例えば、sqrt(1024)というコードを動かすと、与えられた値1024の平方根32を返す形になります。

[6]:
sqrt(1024)
32

Rには他にも様々な関数があります。

例えばlogという関数は何らかの値と対数の底の値を与えると、対数を計算してくれます。

log(1024, 2)というコードを動かすと、1024は2の10乗なので、10を返す形になります。

[7]:
log(1024, 2)
10

2.4. コードとコメント

Rではコードの途中で#を使用することでコメントを記入出来ます。

#以降に記入されたものはコメントとして扱われるため、実行されません。

[8]:
4 + 12 # コメント
# 21 + 24
8 + 70
16
78

コードの途中で何かメモをしておいたり、コードの説明を記述する際には#を上手く使ってください。

講義で提示するコードにも、#で説明が加えられていることがありますが、コメントだと認識しておいてください。

2.5. 複数の値をまとめて扱う・変数

Rでは複数の値を1つのベクトルデータとして扱うことができます。

cという関数でデータをまとめることが出来ます。

c(123, 23, 45, 221, 78)

また、Rでは自分で名前を決めた変数にデータを格納しておくことが可能です。

変数名 <- データという形でデータを格納できます。

例えば、上の5つの値をxという変数に格納するには、x <- c(123, 23, 45, 221, 78)となります。

[9]:
x <- c(123, 23, 45, 221, 78)

xに値を一度格納すると、以降はxの中身が格納した値になります。

[10]:
x
  1. 123
  2. 23
  3. 45
  4. 221
  5. 78

複数の値に対して適用することが出来る関数があり、

平均値を計算するmean関数、合計値を計算するsum関数などがあります。

[11]:
x <- c(123, 23, 45, 221, 78)
mean(x)
98
[12]:
# sum関数
sum(x)
490

summaryという関数はデータの平均値や最大値などの基本的な統計量を計算してくれます。

[13]:
# summry関数
x <- c(12, 23, 32, 18, 19, 20)
summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
  12.00   18.25   19.50   20.67   22.25   32.00

Rにはデータの要約や検定など、統計的な処理を行ってくれる関数が充実しているので、

難しい計算を自分でやらなくても手軽にデータの統計処理が出来る様になります。

2.5.1. ベクトルに対する計算・ベクトル同士の計算

ベクトルのすべての要素に対して、ある値を引いたり、かける事が出来ます。

[14]:
x <- c(12, 23, 32, 18, 19, 20)

x - 10
  1. 2
  2. 13
  3. 22
  4. 8
  5. 9
  6. 10
[15]:
# ベクトルかけ算
x * 10
  1. 120
  2. 230
  3. 320
  4. 180
  5. 190
  6. 200

また、ベクトル同士で計算を行うと、

1番目の要素同士、2番目の要素同士、3番目の要素同士…と、各要素ごとに計算が行われます。

[16]:
x <- c(12, 23, 32, 18, 19, 20)
y <- c(10, 20, 30, 40, 50, 60)

x + y
  1. 22
  2. 43
  3. 62
  4. 58
  5. 69
  6. 80

ベクトルを^2で2乗すると、各要素ごとに2乗されることになります。

[17]:
# ベクトルを2乗
x <- c(12, 23, 32, 18, 19, 20)
x^2
  1. 144
  2. 529
  3. 1024
  4. 324
  5. 361
  6. 400

一見、で?となる様な特徴ですが、このベクトル計算が統計手法に登場する計算で役に立ちます。

例えば実験をして10個の観測値\(X_1, X_2, X_3, ... X_{10}\)が得られたとき、その平均値を\(\bar{X}\)とすると、

\(\sum_{i=1}^{10}(X_i - \bar{X})^2\)

みたいな値を今後計算することになります。

実際に\(X_1, X_2, X_3, ... X_{10}\)\(12, 23, 32, 18, 19, 20,37,28,10,24\)だった場合、

mean関数やsum関数x^2でxの二乗が計算できることを利用して計算してみると…

[18]:
data <- c(12,23,32,18,19,20,37,28,10,24)

# コード書いて計算してみましょう
diff <- data - mean(data)
sum(diff^2)
638.1

また2種類の観測データ\(X_1, X_2, ..., X_{10}\)\(Y_1, Y_2,... Y_{10}\)が得られたとき、

それぞれの平均値\(\bar{X}, \bar{Y}\)とすると

\(\sum_{i=1}^{10}(X_i - \bar{X})(Y_i - \bar{Y})\)

みたいな計算も必要になります。

\(X_1, X_2, X_3, ... X_{10}\)\(12, 23, 32, 18, 19, 20, 37,28,10,24\)

\(Y_1, Y_2, Y_3, ... Y_{10}\)\(102, 240, 289, 156, 188, 201, 222, 278, 98, 232\)だった場合、

[19]:
x <- c(12,23,32,18,19,20,37,28,10,24)
y <- c(102,240,289,156,188,201,222,278,98,232)

# コード書いて計算してみましょう
x_diff <- x - mean(x)
y_diff <- y - mean(y)

sum(x_diff * y_diff)
4204.2

この様な形で、統計手法の計算ではそれぞれの観測値ごとに何らかの計算をする場面が多く出てきます。

その際にRのベクトルの各要素ごとに計算する仕組みが役立ちます。

2.6. CSVファイル等の外部データを読み込む

ここまでは数値データ等を自分で打ち込んできましたが、既存のファイル等からデータを読み込むことも可能です。

ここではデータを保存しておく形式として最もポピュラーなものの1つのCSV形式のファイルを読み込みます。

CSVファイルは、CSV(Comma-Separated Values)の通り、カンマ(,)でデータを区切って保存したファイルです。Excelでも読み込むことが出来るのでよく用いられています。

title

CSVファイルを読み込むための関数read.csvという関数があります。

今回はGoogle Colaboratoryにもともと置いてあるサンプルファイルを読み込んでみます。

read.csv("CSVファイルの名前/URL等")

[20]:
read.csv("sample_data/california_housing_test.csv")
A data.frame: 3000 × 9
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
<dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
-122.0537.37273885 6611537 6066.6085344700
-118.3034.26431510 310 809 2773.5990176500
-117.8133.78273589 5071484 4955.7934270500
-118.3633.8228 67 15 49 116.1359330000
-119.6736.33191241 244 850 2372.9375 81700
-119.5636.51371018 213 663 2041.6635 67000
-121.4338.63431009 225 604 2181.6641 67000
-120.6535.48192310 4711341 4413.2250166900
-122.8438.40153080 6171446 5993.6696194400
-118.0234.08312402 6322830 6032.3333164200
-118.2433.9845 972 2491288 2612.2054125000
-119.1235.8537 736 166 564 1382.4167 58300
-121.9337.25361089 182 535 1704.6900252600
-117.0332.97163936 6941935 6594.5625231200
-117.9733.73272097 3251217 3315.7121222500
-117.9933.8142 161 40 157 502.2000153100
-120.8137.5315 570 123 189 1071.8750181300
-121.2038.69263077 6071603 5952.7174137500
-118.8834.21261590 196 654 1996.5851300000
-122.5938.013588141307345012586.1724414300
-122.1537.75401445 256 849 2553.8913126300
-121.3738.68361775 296 937 3053.1786 83400
-118.1634.07472994 5431651 5613.8644241500
-122.2037.79452021 5281410 4802.7788115400
-117.2833.2813613110404049 9403.8156150700
-118.0334.16361401 218 667 2257.1615484700
-122.4237.7652358710302259 9792.5403250000
-118.3933.99322612 4181030 4026.6030369200
-118.4534.071948451609375115391.5830350000
-118.4834.01303078 9541561 9013.4852425000
-122.4737.77522241 4431042 3774.1635398400
-120.9335.7611899716981825 7563.2300154300
-118.1434.17522667 4861681 5044.0524173100
-122.7338.461440421298232311582.0651135400
-117.0632.76372356 4761231 4992.9650155700
-120.7135.50123098 4531433 4345.2508292900
-118.3134.05351692 4231578 4062.5313305800
-119.7036.75113626 7791819 7312.4956 87500
-121.3438.64172761 5011128 4823.7562139700
-117.9134.0920432710372296 9633.0441185400
-119.7636.79322463 4681261 4863.3281 75100
-120.6635.49174422 9452307 8852.8285171300
-118.2834.08421618 5221454 4403.1607182000
-122.5437.90482491 460 937 4554.4375370000
-117.5933.88133239 8492751 8132.6111107000
-120.4734.94171368 308 642 3031.8633109400
-118.2533.9342 819 233 899 2281.1346 85400
-121.9737.29254096 7432027 7415.3294300300
-122.0136.97432162 5091208 4642.5417260900
-122.0237.60321295 2951097 3283.2386149600
-118.2334.09491638 4561500 4302.6923150000
-117.1734.28134867 718 780 2507.1997253800
-122.3337.3952 573 102 232 926.2263500001
-117.9133.60372088 510 673 3905.1048500001
-117.9333.8635 931 181 516 1745.5867182500
-119.8634.42231450 6421258 6071.1790225000
-118.1434.062752571082349610363.3906237200
-119.7036.3010 956 201 693 2202.2895 62000
-117.1234.1040 96 14 46 143.2708162500
-119.6334.42421765 263 753 2608.5608500001

2.6.1. Google Colaboratoryで使用できるファイルについて

Google Colaboratoryで自分のデータを扱いたい場合、Google Colaboratoryにファイルをアップロードする必要があります。

左端のメニューからフォルダマークを選び、アップロードボタンからファイルをアップロードします。

ドラッグ&ドロップでもアップロード可能です。

title

ここから使用したいファイルをアップロードすることで、Google Colaboratory上で扱うことが出来る様になります。

下記リンク先を右クリックから名前を付けて保存し、左端のメニューからアップロードしてください。

(※右クリックで名前を付けてリンク先を保存しようとすると、

ファイル名がengland-premier-league-players-2018-to-2019-stats.txtになる場合があります)

england-premier-league-players-2018-to-2019-stats.csv

アップロードした後、read.csv関数で読み込んでみてください。

[21]:
# アップロードしたファイル名
read.csv("england-premier-league-players-2018-to-2019-stats.csv")
A data.frame: 572 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
Aaron Cresswell 316296832001989/12/15Premier League2018/2019Defender West Ham United 1589 8881.25 7279158915890.06290191 8020
Aaron Lennon 335455296001987/04/16Premier League2018/2019MidfielderBurnley 1217 4871.48 6176121712170.07196187 -110
Aaron Mooy 306533568001990/09/15Premier League2018/2019MidfielderHuddersfield Town 232711901.78 5180 58223270.15144233 -1 3
Aaron Ramsey 306621696001990/12/26Premier League2018/2019MidfielderArsenal 1327 6890.8111147 0 2210.00 69 8 -1 5
Aaron Rowe 209682848002000/09/07Premier League2018/2019Forward Huddersfield Town 69 141.30 6935 0 00.00 -1 -1 -131
Aaron Wan-Bissaka 238805024001997/11/26Premier League2018/2019MidfielderCrystal Palace 313516051.18 7690 52310450.17312160 -122
Abdelhamid Sabiri 248491392001996/11/28Premier League2018/2019MidfielderHuddersfield Town 49 05.51 1625 0 00.00 -1 -1 -122
Abdoulaye Doucouré 287258464001993/01/01Premier League2018/2019MidfielderWatford 306215661.59 5787 437 5100.21124 80 -1 5
Aboubakar Kamara 267945344001995/03/07Premier League2018/2019Forward Fulham 687 4682.10 4353 344 00.26 38412 -1 4
Adalberto Peñaranda Maestre 238650368001997/05/31Premier League2018/2019Forward Watford 0 00.00 0 0 0 00.00 -1 -1 -1-1
Adam David Lallana 325792256001988/05/10Premier League2018/2019MidfielderLiverpool 465 1890.3923336 465 00.19379344 -118
Adam Masina 277574688001994/01/02Premier League2018/2019Defender Watford 1003 4631.70 5372 20110030.4539715514420
Adam Smith 296728832001991/04/29Premier League2018/2019Defender AFC Bournemouth 207310511.30 6983 29620730.30227228 8510
Adama Diakhaby 248365248001996/07/05Premier League2018/2019Forward Huddersfield Town 551 3452.61 3446 551 00.16332359 -126
Adama Traoré Diarra 258225280001996/01/25Premier League2018/2019MidfielderWolverhampton Wanderers 890 3151.11 8131 890 8900.10160152 -113
Ademola Lookman 238773056001997/10/20Premier League2018/2019Forward Everton 601 3341.05 8629 0 3010.00292 20 -117
Adrian Mariappa 345286816001986/10/03Premier League2018/2019Defender Watford 1921 8411.36 6674 640 00.14396414 9421
Adrián San Miguel del Castillo 345366304001987/01/03Premier League2018/2019GoalkeeperWest Ham United 0 00.00 0 0 0 00.00 -1 -1 -1-1
Adrien Sebastian Perruchet Silva326059232001989/03/15Premier League2018/2019MidfielderLeicester City 88 81.02 8844 0 00.00 -1 -1 -115
Ainsley Maitland-Niles 238728128001997/08/29Premier League2018/2019MidfielderArsenal 985 4621.46 6262 328 9850.27174167 -115
Alberto Moreno 287102944001992/07/05Premier League2018/2019Defender Liverpool 155 901.16 7878 0 00.00 -1 -1 -117
Aleksandar Mitrović 267796736001994/09/16Premier League2018/2019Forward Fulham 328216162.03 4489 46910940.19 62176 -1 1
Alex Iwobi 248310816001996/05/03Premier League2018/2019Forward Arsenal 1972 7421.41 6456 0 3290.00128 31 -1 8
Alex McCarthy 316286464001989/12/03Premier League2018/2019GoalkeeperSouthampton 225011701.48 61902250 00.0437236511421
Alex Oxlade-Chamberlain 277453728001993/08/15Premier League2018/2019MidfielderLiverpool 19 190.00 010 0 00.00 -1 -1 -121
Alex Pritchard 277363872001993/05/03Premier League2018/2019MidfielderHuddersfield Town 2092 9921.68 54701046 00.09171373 -1 5
Alex Smithies 316365952001990/03/05Premier League2018/2019GoalkeeperCardiff City 0 00.00 0 0 0 00.00 -1 -1 -1-1
Alexander Sørloth 258181216001995/12/05Premier League2018/2019Forward Crystal Palace 173 1210.5217314 0 00.00 -1 -1 -117
Alexandre Lacazette 296753888001991/05/28Premier League2018/2019Forward Arsenal 250314031.01 89721252 3130.07 21 25 -1 2
Alexandre Nascimento Costa Silva248584704001997/03/16Premier League2018/2019Forward West Ham United 17 00.00 017 0 00.00 -1 -1 -116
Tyreke Johnson 229100512001998/11/03Premier League2018/2019Defender Southampton 0 00.00 0 0 0 00.00 -1 -1 -1-1
Tyrone Mings 287319808001993/03/13Premier League2018/2019Defender AFC Bournemouth 141 72.55 3528 0 00.00 -1 -1 -123
Vicente Guaita 345372352001987/01/10Premier League2018/2019GoalkeeperCrystal Palace 175510351.08 8488 878 00.10325352 4519
Vicente Iborra De La Fuente 335692896001988/01/16Premier League2018/2019MidfielderLeicester City 226 1521.59 5728 0 00.00 -1 -1 -114
Víctor Camarasa 267700832001994/05/28Premier League2018/2019MidfielderCardiff City 257912671.68 5481 430 6450.21111106 -1 1
Victor Moses 306609600001990/12/12Premier League2018/2019MidfielderChelsea 26 173.46 2613 0 00.00 -1 -1 -123
Victor Nilsson Lindelöf 267744032001994/07/17Premier League2018/2019Defender Manchester United 260211121.31 6887260226020.03263246 8814
Victor Wanyama 296778080001991/06/25Premier League2018/2019MidfielderTottenham Hotspur 509 3020.5317039 255 00.35106266 -111
Viktor Gyökeres 228969184001998/06/04Premier League2018/2019Forward Brighton & Hove Albion 0 00.00 0 0 0 00.00 -1 -1 -1-1
Vincent Janssen 267716384001994/06/15Premier League2018/2019Forward Tottenham Hotspur 36 360.00 012 0 00.00 -1 -1 -128
Vincent Kompany 345134752001986/04/10Premier League2018/2019Defender Manchester City 1223 5610.5217572 204 00.44194384 712
Virgil van Dijk 296789312001991/07/08Premier League2018/2019Defender Liverpool 338516750.5117889338516930.03152201 5 6
Wayne Hennessey 345384448001987/01/24Premier League2018/2019GoalkeeperCrystal Palace 1575 6751.31 6888 0 00.00321404 8713
Wes Morgan 374434912001984/01/21Premier League2018/2019Defender Leicester City 1926 7831.12 8088 385 00.23125300 48 6
Wesley Hoedt 277629120001994/03/06Premier League2018/2019Defender Southampton 1170 5401.54 5990 585 00.1537437012327
Wilfredo Daniel Caballero 393704832001981/09/28Premier League2018/2019GoalkeeperChelsea 180 900.00 090 0 00.00 -1 -1 -119
Wilfried Zaha 287213536001992/11/10Premier League2018/2019MidfielderCrystal Palace 304113471.33 6889 304 6080.30 63 92 -1 2
Will Hughes 257980768001995/04/17Premier League2018/2019MidfielderWatford 243612511.44 6276 487 6090.18199 91 -1 8
Will Norris 277451136001993/08/12Premier League2018/2019GoalkeeperWolverhampton Wanderers 0 00.00 0 0 0 00.00 -1 -1 -1-1
Willian 325870880001988/08/09Premier League2018/2019Forward Chelsea 2108 8330.98 92661054 3510.09132 36 -1 8
Willy Boly 306655392001991/02/03Premier League2018/2019Defender Wolverhampton Wanderers316915301.08 8388 792 00.11148312 43 4
Xherdan Shaqiri 296870528001991/10/10Premier League2018/2019MidfielderLiverpool 1058 5380.4321244 529 3530.17 15 39 -1 4
Yann Valery 229196416001999/02/22Premier League2018/2019Defender Southampton 171510701.36 6675 34317150.26162214 95 7
Yerry Fernando Mina González267802784001994/09/23Premier League2018/2019Defender Everton 890 3601.21 7468 297 00.30161329 67 9
Yoshinori Muto 287111584001992/07/15Premier League2018/2019Forward Newcastle United 516 1801.74 5230 516 00.17113290 -1 8
Youri Tielemans 238629632001997/05/07Premier League2018/2019MidfielderLeicester City 1092 5751.07 8484 546 2730.16 80 13 -1 4
Yves Bissouma 248413632001996/08/30Premier League2018/2019MidfielderBrighton & Hove Albion 1769 7471.53 5963 354 00.25402293 -117
Zechariah Medley 209629280002000/07/07Premier League2018/2019Defender Arsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
Zeze Steven Sessegnon 209586080002000/05/18Premier League2018/2019Defender Fulham 0 00.00 0 0 0 00.00 -1 -1 -1-1
Łukasz Fabiański 354826304001985/04/18Premier League2018/2019GoalkeeperWest Ham United 342017101.26 7190 0 00.00391343 8119

Web上でアクセス出来るCSVファイルであれば、ダウンロードせずに直接URLから読み込むこともできます。

[22]:
read.csv("https://raw.githubusercontent.com/slt666666/basic_fri_2024/refs/heads/master/source/_static/data/england-premier-league-players-2018-to-2019-stats.csv")
A data.frame: 572 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
Aaron Cresswell 316296832001989/12/15Premier League2018/2019Defender West Ham United 1589 8881.25 7279158915890.06290191 8020
Aaron Lennon 335455296001987/04/16Premier League2018/2019MidfielderBurnley 1217 4871.48 6176121712170.07196187 -110
Aaron Mooy 306533568001990/09/15Premier League2018/2019MidfielderHuddersfield Town 232711901.78 5180 58223270.15144233 -1 3
Aaron Ramsey 306621696001990/12/26Premier League2018/2019MidfielderArsenal 1327 6890.8111147 0 2210.00 69 8 -1 5
Aaron Rowe 209682848002000/09/07Premier League2018/2019Forward Huddersfield Town 69 141.30 6935 0 00.00 -1 -1 -131
Aaron Wan-Bissaka 238805024001997/11/26Premier League2018/2019MidfielderCrystal Palace 313516051.18 7690 52310450.17312160 -122
Abdelhamid Sabiri 248491392001996/11/28Premier League2018/2019MidfielderHuddersfield Town 49 05.51 1625 0 00.00 -1 -1 -122
Abdoulaye Doucouré 287258464001993/01/01Premier League2018/2019MidfielderWatford 306215661.59 5787 437 5100.21124 80 -1 5
Aboubakar Kamara 267945344001995/03/07Premier League2018/2019Forward Fulham 687 4682.10 4353 344 00.26 38412 -1 4
Adalberto Peñaranda Maestre 238650368001997/05/31Premier League2018/2019Forward Watford 0 00.00 0 0 0 00.00 -1 -1 -1-1
Adam David Lallana 325792256001988/05/10Premier League2018/2019MidfielderLiverpool 465 1890.3923336 465 00.19379344 -118
Adam Masina 277574688001994/01/02Premier League2018/2019Defender Watford 1003 4631.70 5372 20110030.4539715514420
Adam Smith 296728832001991/04/29Premier League2018/2019Defender AFC Bournemouth 207310511.30 6983 29620730.30227228 8510
Adama Diakhaby 248365248001996/07/05Premier League2018/2019Forward Huddersfield Town 551 3452.61 3446 551 00.16332359 -126
Adama Traoré Diarra 258225280001996/01/25Premier League2018/2019MidfielderWolverhampton Wanderers 890 3151.11 8131 890 8900.10160152 -113
Ademola Lookman 238773056001997/10/20Premier League2018/2019Forward Everton 601 3341.05 8629 0 3010.00292 20 -117
Adrian Mariappa 345286816001986/10/03Premier League2018/2019Defender Watford 1921 8411.36 6674 640 00.14396414 9421
Adrián San Miguel del Castillo 345366304001987/01/03Premier League2018/2019GoalkeeperWest Ham United 0 00.00 0 0 0 00.00 -1 -1 -1-1
Adrien Sebastian Perruchet Silva326059232001989/03/15Premier League2018/2019MidfielderLeicester City 88 81.02 8844 0 00.00 -1 -1 -115
Ainsley Maitland-Niles 238728128001997/08/29Premier League2018/2019MidfielderArsenal 985 4621.46 6262 328 9850.27174167 -115
Alberto Moreno 287102944001992/07/05Premier League2018/2019Defender Liverpool 155 901.16 7878 0 00.00 -1 -1 -117
Aleksandar Mitrović 267796736001994/09/16Premier League2018/2019Forward Fulham 328216162.03 4489 46910940.19 62176 -1 1
Alex Iwobi 248310816001996/05/03Premier League2018/2019Forward Arsenal 1972 7421.41 6456 0 3290.00128 31 -1 8
Alex McCarthy 316286464001989/12/03Premier League2018/2019GoalkeeperSouthampton 225011701.48 61902250 00.0437236511421
Alex Oxlade-Chamberlain 277453728001993/08/15Premier League2018/2019MidfielderLiverpool 19 190.00 010 0 00.00 -1 -1 -121
Alex Pritchard 277363872001993/05/03Premier League2018/2019MidfielderHuddersfield Town 2092 9921.68 54701046 00.09171373 -1 5
Alex Smithies 316365952001990/03/05Premier League2018/2019GoalkeeperCardiff City 0 00.00 0 0 0 00.00 -1 -1 -1-1
Alexander Sørloth 258181216001995/12/05Premier League2018/2019Forward Crystal Palace 173 1210.5217314 0 00.00 -1 -1 -117
Alexandre Lacazette 296753888001991/05/28Premier League2018/2019Forward Arsenal 250314031.01 89721252 3130.07 21 25 -1 2
Alexandre Nascimento Costa Silva248584704001997/03/16Premier League2018/2019Forward West Ham United 17 00.00 017 0 00.00 -1 -1 -116
Tyreke Johnson 229100512001998/11/03Premier League2018/2019Defender Southampton 0 00.00 0 0 0 00.00 -1 -1 -1-1
Tyrone Mings 287319808001993/03/13Premier League2018/2019Defender AFC Bournemouth 141 72.55 3528 0 00.00 -1 -1 -123
Vicente Guaita 345372352001987/01/10Premier League2018/2019GoalkeeperCrystal Palace 175510351.08 8488 878 00.10325352 4519
Vicente Iborra De La Fuente 335692896001988/01/16Premier League2018/2019MidfielderLeicester City 226 1521.59 5728 0 00.00 -1 -1 -114
Víctor Camarasa 267700832001994/05/28Premier League2018/2019MidfielderCardiff City 257912671.68 5481 430 6450.21111106 -1 1
Victor Moses 306609600001990/12/12Premier League2018/2019MidfielderChelsea 26 173.46 2613 0 00.00 -1 -1 -123
Victor Nilsson Lindelöf 267744032001994/07/17Premier League2018/2019Defender Manchester United 260211121.31 6887260226020.03263246 8814
Victor Wanyama 296778080001991/06/25Premier League2018/2019MidfielderTottenham Hotspur 509 3020.5317039 255 00.35106266 -111
Viktor Gyökeres 228969184001998/06/04Premier League2018/2019Forward Brighton & Hove Albion 0 00.00 0 0 0 00.00 -1 -1 -1-1
Vincent Janssen 267716384001994/06/15Premier League2018/2019Forward Tottenham Hotspur 36 360.00 012 0 00.00 -1 -1 -128
Vincent Kompany 345134752001986/04/10Premier League2018/2019Defender Manchester City 1223 5610.5217572 204 00.44194384 712
Virgil van Dijk 296789312001991/07/08Premier League2018/2019Defender Liverpool 338516750.5117889338516930.03152201 5 6
Wayne Hennessey 345384448001987/01/24Premier League2018/2019GoalkeeperCrystal Palace 1575 6751.31 6888 0 00.00321404 8713
Wes Morgan 374434912001984/01/21Premier League2018/2019Defender Leicester City 1926 7831.12 8088 385 00.23125300 48 6
Wesley Hoedt 277629120001994/03/06Premier League2018/2019Defender Southampton 1170 5401.54 5990 585 00.1537437012327
Wilfredo Daniel Caballero 393704832001981/09/28Premier League2018/2019GoalkeeperChelsea 180 900.00 090 0 00.00 -1 -1 -119
Wilfried Zaha 287213536001992/11/10Premier League2018/2019MidfielderCrystal Palace 304113471.33 6889 304 6080.30 63 92 -1 2
Will Hughes 257980768001995/04/17Premier League2018/2019MidfielderWatford 243612511.44 6276 487 6090.18199 91 -1 8
Will Norris 277451136001993/08/12Premier League2018/2019GoalkeeperWolverhampton Wanderers 0 00.00 0 0 0 00.00 -1 -1 -1-1
Willian 325870880001988/08/09Premier League2018/2019Forward Chelsea 2108 8330.98 92661054 3510.09132 36 -1 8
Willy Boly 306655392001991/02/03Premier League2018/2019Defender Wolverhampton Wanderers316915301.08 8388 792 00.11148312 43 4
Xherdan Shaqiri 296870528001991/10/10Premier League2018/2019MidfielderLiverpool 1058 5380.4321244 529 3530.17 15 39 -1 4
Yann Valery 229196416001999/02/22Premier League2018/2019Defender Southampton 171510701.36 6675 34317150.26162214 95 7
Yerry Fernando Mina González267802784001994/09/23Premier League2018/2019Defender Everton 890 3601.21 7468 297 00.30161329 67 9
Yoshinori Muto 287111584001992/07/15Premier League2018/2019Forward Newcastle United 516 1801.74 5230 516 00.17113290 -1 8
Youri Tielemans 238629632001997/05/07Premier League2018/2019MidfielderLeicester City 1092 5751.07 8484 546 2730.16 80 13 -1 4
Yves Bissouma 248413632001996/08/30Premier League2018/2019MidfielderBrighton & Hove Albion 1769 7471.53 5963 354 00.25402293 -117
Zechariah Medley 209629280002000/07/07Premier League2018/2019Defender Arsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
Zeze Steven Sessegnon 209586080002000/05/18Premier League2018/2019Defender Fulham 0 00.00 0 0 0 00.00 -1 -1 -1-1
Łukasz Fabiański 354826304001985/04/18Premier League2018/2019GoalkeeperWest Ham United 342017101.26 7190 0 00.00391343 8119

2.6.2. 自分のPCでRを動かしている場合のファイル読み込み

自分のPCでRを動かしている場合、あるファイルを読み込みたいときには、2つの方法があります。

  • ファイルの相対パスを入力して読み込む …

read.csv("C:/Users/xxx/Desktop/sample_data/sample.csv")

  • setwd()でファイルのある場所まで移動して読み込む …

setwd("C:/Users/xxx/Desktop/sample_data")read.csv("sample.csv")

title

setwd()はどの場所(フォルダ)でRを動かすかを設定する関数です。

2.7. データフレーム

read.csv関数でCSV形式のファイルを読み込むと、綺麗に整えられたテーブル上のフォーマットとして扱われます。

この形式をデータフレームと呼び、Rで利用されるデータの保存形式になります。

数値や文字などの異なるデータを行列の様にまとめて扱うことができ、

グラフを描く関数や統計処理を行う関数を使用するためには、データフレームとしてデータを変数に格納しておく必要があります。

2.7.1. データフレームの作成

基本的にはCSVファイル等でデータはまとめておき、read.csvで読み込む場合が多いですが、

以下の様な書き方でデータフレームを0から作成することもできます。

data.frame(列名=データ, 列名=データ, ... 列名=データ)
[23]:
x <- c("red", "yellow", "blue", "red", "yellow", "blue")
y <- c(21, 20, 19, 19, 22, 20)
z <- c(89, 67, 95, 58, 78, 75)

data.frame("flower"=x, "leaf_length"=y, "plant_height"=z)
A data.frame: 6 × 3
flowerleaf_lengthplant_height
<chr><dbl><dbl>
red 2189
yellow2067
blue 1995
red 1958
yellow2278
blue 2075

2.7.2. データフレームから要素の抽出

CSV形式のファイルを読み込むread.csv関数は、自動的にデータフレームとしてCSVファイルをRに読み込みます。

先ほどアップロードしたデータをデータフレームとしてdfという変数に格納しておきます。

[24]:
df <- read.csv("england-premier-league-players-2018-to-2019-stats.csv")
[25]:
df
A data.frame: 572 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
Aaron Cresswell 316296832001989/12/15Premier League2018/2019Defender West Ham United 1589 8881.25 7279158915890.06290191 8020
Aaron Lennon 335455296001987/04/16Premier League2018/2019MidfielderBurnley 1217 4871.48 6176121712170.07196187 -110
Aaron Mooy 306533568001990/09/15Premier League2018/2019MidfielderHuddersfield Town 232711901.78 5180 58223270.15144233 -1 3
Aaron Ramsey 306621696001990/12/26Premier League2018/2019MidfielderArsenal 1327 6890.8111147 0 2210.00 69 8 -1 5
Aaron Rowe 209682848002000/09/07Premier League2018/2019Forward Huddersfield Town 69 141.30 6935 0 00.00 -1 -1 -131
Aaron Wan-Bissaka 238805024001997/11/26Premier League2018/2019MidfielderCrystal Palace 313516051.18 7690 52310450.17312160 -122
Abdelhamid Sabiri 248491392001996/11/28Premier League2018/2019MidfielderHuddersfield Town 49 05.51 1625 0 00.00 -1 -1 -122
Abdoulaye Doucouré 287258464001993/01/01Premier League2018/2019MidfielderWatford 306215661.59 5787 437 5100.21124 80 -1 5
Aboubakar Kamara 267945344001995/03/07Premier League2018/2019Forward Fulham 687 4682.10 4353 344 00.26 38412 -1 4
Adalberto Peñaranda Maestre 238650368001997/05/31Premier League2018/2019Forward Watford 0 00.00 0 0 0 00.00 -1 -1 -1-1
Adam David Lallana 325792256001988/05/10Premier League2018/2019MidfielderLiverpool 465 1890.3923336 465 00.19379344 -118
Adam Masina 277574688001994/01/02Premier League2018/2019Defender Watford 1003 4631.70 5372 20110030.4539715514420
Adam Smith 296728832001991/04/29Premier League2018/2019Defender AFC Bournemouth 207310511.30 6983 29620730.30227228 8510
Adama Diakhaby 248365248001996/07/05Premier League2018/2019Forward Huddersfield Town 551 3452.61 3446 551 00.16332359 -126
Adama Traoré Diarra 258225280001996/01/25Premier League2018/2019MidfielderWolverhampton Wanderers 890 3151.11 8131 890 8900.10160152 -113
Ademola Lookman 238773056001997/10/20Premier League2018/2019Forward Everton 601 3341.05 8629 0 3010.00292 20 -117
Adrian Mariappa 345286816001986/10/03Premier League2018/2019Defender Watford 1921 8411.36 6674 640 00.14396414 9421
Adrián San Miguel del Castillo 345366304001987/01/03Premier League2018/2019GoalkeeperWest Ham United 0 00.00 0 0 0 00.00 -1 -1 -1-1
Adrien Sebastian Perruchet Silva326059232001989/03/15Premier League2018/2019MidfielderLeicester City 88 81.02 8844 0 00.00 -1 -1 -115
Ainsley Maitland-Niles 238728128001997/08/29Premier League2018/2019MidfielderArsenal 985 4621.46 6262 328 9850.27174167 -115
Alberto Moreno 287102944001992/07/05Premier League2018/2019Defender Liverpool 155 901.16 7878 0 00.00 -1 -1 -117
Aleksandar Mitrović 267796736001994/09/16Premier League2018/2019Forward Fulham 328216162.03 4489 46910940.19 62176 -1 1
Alex Iwobi 248310816001996/05/03Premier League2018/2019Forward Arsenal 1972 7421.41 6456 0 3290.00128 31 -1 8
Alex McCarthy 316286464001989/12/03Premier League2018/2019GoalkeeperSouthampton 225011701.48 61902250 00.0437236511421
Alex Oxlade-Chamberlain 277453728001993/08/15Premier League2018/2019MidfielderLiverpool 19 190.00 010 0 00.00 -1 -1 -121
Alex Pritchard 277363872001993/05/03Premier League2018/2019MidfielderHuddersfield Town 2092 9921.68 54701046 00.09171373 -1 5
Alex Smithies 316365952001990/03/05Premier League2018/2019GoalkeeperCardiff City 0 00.00 0 0 0 00.00 -1 -1 -1-1
Alexander Sørloth 258181216001995/12/05Premier League2018/2019Forward Crystal Palace 173 1210.5217314 0 00.00 -1 -1 -117
Alexandre Lacazette 296753888001991/05/28Premier League2018/2019Forward Arsenal 250314031.01 89721252 3130.07 21 25 -1 2
Alexandre Nascimento Costa Silva248584704001997/03/16Premier League2018/2019Forward West Ham United 17 00.00 017 0 00.00 -1 -1 -116
Tyreke Johnson 229100512001998/11/03Premier League2018/2019Defender Southampton 0 00.00 0 0 0 00.00 -1 -1 -1-1
Tyrone Mings 287319808001993/03/13Premier League2018/2019Defender AFC Bournemouth 141 72.55 3528 0 00.00 -1 -1 -123
Vicente Guaita 345372352001987/01/10Premier League2018/2019GoalkeeperCrystal Palace 175510351.08 8488 878 00.10325352 4519
Vicente Iborra De La Fuente 335692896001988/01/16Premier League2018/2019MidfielderLeicester City 226 1521.59 5728 0 00.00 -1 -1 -114
Víctor Camarasa 267700832001994/05/28Premier League2018/2019MidfielderCardiff City 257912671.68 5481 430 6450.21111106 -1 1
Victor Moses 306609600001990/12/12Premier League2018/2019MidfielderChelsea 26 173.46 2613 0 00.00 -1 -1 -123
Victor Nilsson Lindelöf 267744032001994/07/17Premier League2018/2019Defender Manchester United 260211121.31 6887260226020.03263246 8814
Victor Wanyama 296778080001991/06/25Premier League2018/2019MidfielderTottenham Hotspur 509 3020.5317039 255 00.35106266 -111
Viktor Gyökeres 228969184001998/06/04Premier League2018/2019Forward Brighton & Hove Albion 0 00.00 0 0 0 00.00 -1 -1 -1-1
Vincent Janssen 267716384001994/06/15Premier League2018/2019Forward Tottenham Hotspur 36 360.00 012 0 00.00 -1 -1 -128
Vincent Kompany 345134752001986/04/10Premier League2018/2019Defender Manchester City 1223 5610.5217572 204 00.44194384 712
Virgil van Dijk 296789312001991/07/08Premier League2018/2019Defender Liverpool 338516750.5117889338516930.03152201 5 6
Wayne Hennessey 345384448001987/01/24Premier League2018/2019GoalkeeperCrystal Palace 1575 6751.31 6888 0 00.00321404 8713
Wes Morgan 374434912001984/01/21Premier League2018/2019Defender Leicester City 1926 7831.12 8088 385 00.23125300 48 6
Wesley Hoedt 277629120001994/03/06Premier League2018/2019Defender Southampton 1170 5401.54 5990 585 00.1537437012327
Wilfredo Daniel Caballero 393704832001981/09/28Premier League2018/2019GoalkeeperChelsea 180 900.00 090 0 00.00 -1 -1 -119
Wilfried Zaha 287213536001992/11/10Premier League2018/2019MidfielderCrystal Palace 304113471.33 6889 304 6080.30 63 92 -1 2
Will Hughes 257980768001995/04/17Premier League2018/2019MidfielderWatford 243612511.44 6276 487 6090.18199 91 -1 8
Will Norris 277451136001993/08/12Premier League2018/2019GoalkeeperWolverhampton Wanderers 0 00.00 0 0 0 00.00 -1 -1 -1-1
Willian 325870880001988/08/09Premier League2018/2019Forward Chelsea 2108 8330.98 92661054 3510.09132 36 -1 8
Willy Boly 306655392001991/02/03Premier League2018/2019Defender Wolverhampton Wanderers316915301.08 8388 792 00.11148312 43 4
Xherdan Shaqiri 296870528001991/10/10Premier League2018/2019MidfielderLiverpool 1058 5380.4321244 529 3530.17 15 39 -1 4
Yann Valery 229196416001999/02/22Premier League2018/2019Defender Southampton 171510701.36 6675 34317150.26162214 95 7
Yerry Fernando Mina González267802784001994/09/23Premier League2018/2019Defender Everton 890 3601.21 7468 297 00.30161329 67 9
Yoshinori Muto 287111584001992/07/15Premier League2018/2019Forward Newcastle United 516 1801.74 5230 516 00.17113290 -1 8
Youri Tielemans 238629632001997/05/07Premier League2018/2019MidfielderLeicester City 1092 5751.07 8484 546 2730.16 80 13 -1 4
Yves Bissouma 248413632001996/08/30Premier League2018/2019MidfielderBrighton & Hove Albion 1769 7471.53 5963 354 00.25402293 -117
Zechariah Medley 209629280002000/07/07Premier League2018/2019Defender Arsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
Zeze Steven Sessegnon 209586080002000/05/18Premier League2018/2019Defender Fulham 0 00.00 0 0 0 00.00 -1 -1 -1-1
Łukasz Fabiański 354826304001985/04/18Premier League2018/2019GoalkeeperWest Ham United 342017101.26 7190 0 00.00391343 8119

データフレームとしてデータを読み込んでおくと、一部のデータを抽出すること等が容易になります。

データフレームの特定の列の値を取り出すにはデータフレームの変数名$列名という形で取り出せます。

例えば先ほどdfという変数に読み込んだデータのageという列を取り出すにはdf$ageという形で取り出せま す。

[26]:
# age列取り出し
df$age
  1. 31
  2. 33
  3. 30
  4. 30
  5. 20
  6. 23
  7. 24
  8. 28
  9. 26
  10. 23
  11. 32
  12. 27
  13. 29
  14. 24
  15. 25
  16. 23
  17. 34
  18. 34
  19. 32
  20. 23
  21. 28
  22. 26
  23. 24
  24. 31
  25. 27
  26. 27
  27. 31
  28. 25
  29. 29
  30. 24
  31. 32
  32. 23
  33. 27
  34. 22
  35. 20
  36. 27
  37. 28
  38. 28
  39. 31
  40. 27
  41. 29
  42. 30
  43. 25
  44. 24
  45. 25
  46. 27
  47. 34
  48. 31
  49. 29
  50. 32
  51. 20
  52. 32
  53. 25
  54. 21
  55. 29
  56. 25
  57. 26
  58. 28
  59. 35
  60. 22
  61. 31
  62. 27
  63. 41
  64. 31
  65. 31
  66. 35
  67. 33
  68. 26
  69. 27
  70. 32
  71. 0
  72. 24
  73. 27
  74. 37
  75. 28
  76. 33
  77. 31
  78. 23
  79. 21
  80. 21
  81. 26
  82. 32
  83. 28
  84. 25
  85. 26
  86. 29
  87. 28
  88. 37
  89. 23
  90. 32
  91. 40
  92. 24
  93. 20
  94. 26
  95. 23
  96. 22
  97. 29
  98. 26
  99. 21
  100. 29
  101. 35
  102. 29
  103. 29
  104. 31
  105. 33
  106. 31
  107. 34
  108. 27
  109. 31
  110. 31
  111. 23
  112. 31
  113. 29
  114. 29
  115. 30
  116. 29
  117. 34
  118. 30
  119. 30
  120. 31
  121. 37
  122. 29
  123. 28
  124. 28
  125. 21
  126. 32
  127. 20
  128. 28
  129. 31
  130. 28
  131. 28
  132. 31
  133. 26
  134. 31
  135. 28
  136. 32
  137. 29
  138. 31
  139. 30
  140. 34
  141. 27
  142. 30
  143. 30
  144. 31
  145. 23
  146. 32
  147. 30
  148. 30
  149. 33
  150. 35
  151. 28
  152. 24
  153. 29
  154. 27
  155. 22
  156. 31
  157. 24
  158. 24
  159. 22
  160. 32
  161. 27
  162. 28
  163. 24
  164. 25
  165. 21
  166. 24
  167. 23
  168. 21
  169. 30
  170. 27
  171. 21
  172. 28
  173. 25
  174. 26
  175. 20
  176. 26
  177. 27
  178. 28
  179. 29
  180. 20
  181. 32
  182. 29
  183. 31
  184. 29
  185. 27
  186. 33
  187. 31
  188. 32
  189. 27
  190. 36
  191. 35
  192. 26
  193. 29
  194. 27
  195. 32
  196. 25
  197. 30
  198. 33
  199. 24
  200. 28
  201. 33
  202. 21
  203. 31
  204. 33
  205. 33
  206. 32
  207. 30
  208. 29
  209. 19
  210. 24
  211. 28
  212. 26
  213. 28
  214. 30
  215. 23
  216. 29
  217. 31
  218. 25
  219. 31
  220. 21
  221. 33
  222. 31
  223. 20
  224. 22
  225. 23
  226. 25
  227. 31
  228. 32
  229. 32
  230. 28
  231. 20
  232. 31
  233. 37
  234. 27
  235. 27
  236. 35
  237. 33
  238. 28
  239. 26
  240. 28
  241. 21
  242. 31
  243. 33
  244. 31
  245. 30
  246. 26
  247. 35
  248. 28
  249. 26
  250. 22
  251. 27
  252. 26
  253. 30
  254. 28
  255. 29
  256. 31
  257. 32
  258. 33
  259. 22
  260. 21
  261. 24
  262. 20
  263. 34
  264. 24
  265. 29
  266. 30
  267. 36
  268. 30
  269. 29
  270. 30
  271. 29
  272. 28
  273. 29
  274. 29
  275. 33
  276. 40
  277. 38
  278. 35
  279. 38
  280. 29
  281. 24
  282. 20
  283. 24
  284. 31
  285. 25
  286. 28
  287. 20
  288. 26
  289. 29
  290. 24
  291. 29
  292. 26
  293. 27
  294. 23
  295. 30
  296. 25
  297. 29
  298. 25
  299. 33
  300. 29
  301. 30
  302. 31
  303. 27
  304. 31
  305. 27
  306. 24
  307. 22
  308. 25
  309. 33
  310. 31
  311. 31
  312. 27
  313. 28
  314. 21
  315. 34
  316. 21
  317. 20
  318. 28
  319. 25
  320. 22
  321. 31
  322. 22
  323. 33
  324. 25
  325. 34
  326. 24
  327. 27
  328. 32
  329. 23
  330. 30
  331. 33
  332. 28
  333. 32
  334. 34
  335. 27
  336. 29
  337. 34
  338. 34
  339. 28
  340. 36
  341. 33
  342. 32
  343. 26
  344. 36
  345. 30
  346. 31
  347. 37
  348. 35
  349. 29
  350. 26
  351. 36
  352. 32
  353. 29
  354. 25
  355. 32
  356. 21
  357. 27
  358. 32
  359. 33
  360. 21
  361. 23
  362. 32
  363. 30
  364. 31
  365. 22
  366. 34
  367. 28
  368. 22
  369. 32
  370. 26
  371. 22
  372. 28
  373. 34
  374. 33
  375. 26
  376. 30
  377. 26
  378. 29
  379. 22
  380. 26
  381. 34
  382. 29
  383. 34
  384. 37
  385. 27
  386. 39
  387. 28
  388. 25
  389. 27
  390. 32
  391. 30
  392. 29
  393. 22
  394. 26
  395. 28
  396. 23
  397. 24
  398. 20
  399. 20
  400. 35

列名だけではなく、列番号でも指定できます。データフレームの変数名[,列番号]という形です。

例えば7列目のデータを取り出すにはdf[,7]となります。

[27]:
# 7列目取り出し
df[,7]
  1. 'Defender'
  2. 'Midfielder'
  3. 'Midfielder'
  4. 'Midfielder'
  5. 'Forward'
  6. 'Midfielder'
  7. 'Midfielder'
  8. 'Midfielder'
  9. 'Forward'
  10. 'Forward'
  11. 'Midfielder'
  12. 'Defender'
  13. 'Defender'
  14. 'Forward'
  15. 'Midfielder'
  16. 'Forward'
  17. 'Defender'
  18. 'Goalkeeper'
  19. 'Midfielder'
  20. 'Midfielder'
  21. 'Defender'
  22. 'Forward'
  23. 'Forward'
  24. 'Goalkeeper'
  25. 'Midfielder'
  26. 'Midfielder'
  27. 'Goalkeeper'
  28. 'Forward'
  29. 'Forward'
  30. 'Forward'
  31. 'Forward'
  32. 'Defender'
  33. 'Defender'
  34. 'Goalkeeper'
  35. 'Defender'
  36. 'Forward'
  37. 'Goalkeeper'
  38. 'Forward'
  39. 'Midfielder'
  40. 'Midfielder'
  41. 'Forward'
  42. 'Midfielder'
  43. 'Midfielder'
  44. 'Defender'
  45. 'Midfielder'
  46. 'Defender'
  47. 'Midfielder'
  48. 'Forward'
  49. 'Midfielder'
  50. 'Forward'
  51. 'Midfielder'
  52. 'Defender'
  53. 'Goalkeeper'
  54. 'Defender'
  55. 'Midfielder'
  56. 'Forward'
  57. 'Defender'
  58. 'Defender'
  59. 'Defender'
  60. 'Goalkeeper'
  61. 'Midfielder'
  62. 'Defender'
  63. 'Goalkeeper'
  64. 'Forward'
  65. 'Midfielder'
  66. 'Midfielder'
  67. 'Goalkeeper'
  68. 'Defender'
  69. 'Forward'
  70. 'Midfielder'
  71. 'Midfielder'
  72. 'Defender'
  73. 'Defender'
  74. 'Goalkeeper'
  75. 'Defender'
  76. 'Goalkeeper'
  77. 'Defender'
  78. 'Defender'
  79. 'Defender'
  80. 'Forward'
  81. 'Defender'
  82. 'Midfielder'
  83. 'Midfielder'
  84. 'Defender'
  85. 'Midfielder'
  86. 'Goalkeeper'
  87. 'Midfielder'
  88. 'Goalkeeper'
  89. 'Forward'
  90. 'Defender'
  91. 'Defender'
  92. 'Defender'
  93. 'Midfielder'
  94. 'Defender'
  95. 'Forward'
  96. 'Midfielder'
  97. 'Forward'
  98. 'Defender'
  99. 'Defender'
  100. 'Defender'
  101. 'Midfielder'
  102. 'Defender'
  103. 'Forward'
  104. 'Defender'
  105. 'Midfielder'
  106. 'Forward'
  107. 'Defender'
  108. 'Defender'
  109. 'Midfielder'
  110. 'Defender'
  111. 'Defender'
  112. 'Defender'
  113. 'Forward'
  114. 'Midfielder'
  115. 'Forward'
  116. 'Midfielder'
  117. 'Defender'
  118. 'Defender'
  119. 'Defender'
  120. 'Defender'
  121. 'Goalkeeper'
  122. 'Forward'
  123. 'Forward'
  124. 'Midfielder'
  125. 'Midfielder'
  126. 'Defender'
  127. 'Midfielder'
  128. 'Defender'
  129. 'Midfielder'
  130. 'Goalkeeper'
  131. 'Defender'
  132. 'Midfielder'
  133. 'Midfielder'
  134. 'Forward'
  135. 'Forward'
  136. 'Midfielder'
  137. 'Defender'
  138. 'Midfielder'
  139. 'Defender'
  140. 'Defender'
  141. 'Goalkeeper'
  142. 'Forward'
  143. 'Forward'
  144. 'Defender'
  145. 'Forward'
  146. 'Goalkeeper'
  147. 'Goalkeeper'
  148. 'Forward'
  149. 'Defender'
  150. 'Midfielder'
  151. 'Defender'
  152. 'Defender'
  153. 'Midfielder'
  154. 'Defender'
  155. 'Midfielder'
  156. 'Defender'
  157. 'Midfielder'
  158. 'Midfielder'
  159. 'Defender'
  160. 'Defender'
  161. 'Midfielder'
  162. 'Defender'
  163. 'Midfielder'
  164. 'Forward'
  165. 'Midfielder'
  166. 'Forward'
  167. 'Forward'
  168. 'Forward'
  169. 'Midfielder'
  170. 'Goalkeeper'
  171. 'Forward'
  172. 'Forward'
  173. 'Midfielder'
  174. 'Defender'
  175. 'Midfielder'
  176. 'Defender'
  177. 'Midfielder'
  178. 'Defender'
  179. 'Midfielder'
  180. 'Midfielder'
  181. 'Midfielder'
  182. 'Defender'
  183. 'Midfielder'
  184. 'Defender'
  185. 'Midfielder'
  186. 'Goalkeeper'
  187. 'Defender'
  188. 'Defender'
  189. 'Midfielder'
  190. 'Forward'
  191. 'Midfielder'
  192. 'Defender'
  193. 'Defender'
  194. 'Forward'
  195. 'Midfielder'
  196. 'Midfielder'
  197. 'Midfielder'
  198. 'Goalkeeper'
  199. 'Goalkeeper'
  200. 'Midfielder'
  201. 'Midfielder'
  202. 'Goalkeeper'
  203. 'Forward'
  204. 'Defender'
  205. 'Midfielder'
  206. 'Goalkeeper'
  207. 'Defender'
  208. 'Defender'
  209. 'Midfielder'
  210. 'Defender'
  211. 'Forward'
  212. 'Midfielder'
  213. 'Goalkeeper'
  214. 'Defender'
  215. 'Midfielder'
  216. 'Defender'
  217. 'Midfielder'
  218. 'Defender'
  219. 'Defender'
  220. 'Midfielder'
  221. 'Defender'
  222. 'Defender'
  223. 'Midfielder'
  224. 'Midfielder'
  225. 'Defender'
  226. 'Midfielder'
  227. 'Defender'
  228. 'Defender'
  229. 'Midfielder'
  230. 'Defender'
  231. 'Forward'
  232. 'Midfielder'
  233. 'Goalkeeper'
  234. 'Forward'
  235. 'Midfielder'
  236. 'Defender'
  237. 'Midfielder'
  238. 'Midfielder'
  239. 'Midfielder'
  240. 'Forward'
  241. 'Midfielder'
  242. 'Midfielder'
  243. 'Midfielder'
  244. 'Midfielder'
  245. 'Midfielder'
  246. 'Midfielder'
  247. 'Defender'
  248. 'Midfielder'
  249. 'Defender'
  250. 'Midfielder'
  251. 'Midfielder'
  252. 'Midfielder'
  253. 'Defender'
  254. 'Midfielder'
  255. 'Midfielder'
  256. 'Goalkeeper'
  257. 'Midfielder'
  258. 'Defender'
  259. 'Defender'
  260. 'Midfielder'
  261. 'Midfielder'
  262. 'Midfielder'
  263. 'Forward'
  264. 'Midfielder'
  265. 'Midfielder'
  266. 'Forward'
  267. 'Defender'
  268. 'Defender'
  269. 'Midfielder'
  270. 'Defender'
  271. 'Defender'
  272. 'Midfielder'
  273. 'Goalkeeper'
  274. 'Midfielder'
  275. 'Midfielder'
  276. 'Forward'
  277. 'Goalkeeper'
  278. 'Defender'
  279. 'Defender'
  280. 'Defender'
  281. 'Midfielder'
  282. 'Midfielder'
  283. 'Defender'
  284. 'Forward'
  285. 'Midfielder'
  286. 'Forward'
  287. 'Midfielder'
  288. 'Forward'
  289. 'Midfielder'
  290. 'Forward'
  291. 'Forward'
  292. 'Forward'
  293. 'Defender'
  294. 'Forward'
  295. 'Midfielder'
  296. 'Defender'
  297. 'Midfielder'
  298. 'Midfielder'
  299. 'Midfielder'
  300. 'Forward'
  301. 'Forward'
  302. 'Midfielder'
  303. 'Forward'
  304. 'Forward'
  305. 'Midfielder'
  306. 'Midfielder'
  307. 'Defender'
  308. 'Midfielder'
  309. 'Goalkeeper'
  310. 'Defender'
  311. 'Defender'
  312. 'Midfielder'
  313. 'Midfielder'
  314. 'Midfielder'
  315. 'Forward'
  316. 'Goalkeeper'
  317. 'Defender'
  318. 'Forward'
  319. 'Forward'
  320. 'Forward'
  321. 'Forward'
  322. 'Defender'
  323. 'Midfielder'
  324. 'Forward'
  325. 'Defender'
  326. 'Midfielder'
  327. 'Defender'
  328. 'Defender'
  329. 'Midfielder'
  330. 'Defender'
  331. 'Defender'
  332. 'Defender'
  333. 'Forward'
  334. 'Goalkeeper'
  335. 'Goalkeeper'
  336. 'Defender'
  337. 'Forward'
  338. 'Forward'
  339. 'Defender'
  340. 'Defender'
  341. 'Goalkeeper'
  342. 'Defender'
  343. 'Midfielder'
  344. 'Defender'
  345. 'Midfielder'
  346. 'Forward'
  347. 'Defender'
  348. 'Defender'
  349. 'Defender'
  350. 'Forward'
  351. 'Midfielder'
  352. 'Midfielder'
  353. 'Midfielder'
  354. 'Midfielder'
  355. 'Midfielder'
  356. 'Forward'
  357. 'Defender'
  358. 'Forward'
  359. 'Defender'
  360. 'Defender'
  361. 'Defender'
  362. 'Defender'
  363. 'Midfielder'
  364. 'Midfielder'
  365. 'Midfielder'
  366. 'Goalkeeper'
  367. 'Defender'
  368. 'Defender'
  369. 'Forward'
  370. 'Defender'
  371. 'Defender'
  372. 'Defender'
  373. 'Goalkeeper'
  374. 'Midfielder'
  375. 'Midfielder'
  376. 'Midfielder'
  377. 'Defender'
  378. 'Midfielder'
  379. 'Forward'
  380. 'Forward'
  381. 'Defender'
  382. 'Defender'
  383. 'Goalkeeper'
  384. 'Defender'
  385. 'Defender'
  386. 'Goalkeeper'
  387. 'Midfielder'
  388. 'Midfielder'
  389. 'Goalkeeper'
  390. 'Forward'
  391. 'Defender'
  392. 'Midfielder'
  393. 'Defender'
  394. 'Defender'
  395. 'Forward'
  396. 'Midfielder'
  397. 'Midfielder'
  398. 'Defender'
  399. 'Defender'
  400. 'Goalkeeper'

列番号の代わりに列名を使用することもできます。

この場合、列名は」」で括る必要があります。

[28]:
# age列取り出し df[ , ]使用
df[,"age"]
  1. 31
  2. 33
  3. 30
  4. 30
  5. 20
  6. 23
  7. 24
  8. 28
  9. 26
  10. 23
  11. 32
  12. 27
  13. 29
  14. 24
  15. 25
  16. 23
  17. 34
  18. 34
  19. 32
  20. 23
  21. 28
  22. 26
  23. 24
  24. 31
  25. 27
  26. 27
  27. 31
  28. 25
  29. 29
  30. 24
  31. 32
  32. 23
  33. 27
  34. 22
  35. 20
  36. 27
  37. 28
  38. 28
  39. 31
  40. 27
  41. 29
  42. 30
  43. 25
  44. 24
  45. 25
  46. 27
  47. 34
  48. 31
  49. 29
  50. 32
  51. 20
  52. 32
  53. 25
  54. 21
  55. 29
  56. 25
  57. 26
  58. 28
  59. 35
  60. 22
  61. 31
  62. 27
  63. 41
  64. 31
  65. 31
  66. 35
  67. 33
  68. 26
  69. 27
  70. 32
  71. 0
  72. 24
  73. 27
  74. 37
  75. 28
  76. 33
  77. 31
  78. 23
  79. 21
  80. 21
  81. 26
  82. 32
  83. 28
  84. 25
  85. 26
  86. 29
  87. 28
  88. 37
  89. 23
  90. 32
  91. 40
  92. 24
  93. 20
  94. 26
  95. 23
  96. 22
  97. 29
  98. 26
  99. 21
  100. 29
  101. 35
  102. 29
  103. 29
  104. 31
  105. 33
  106. 31
  107. 34
  108. 27
  109. 31
  110. 31
  111. 23
  112. 31
  113. 29
  114. 29
  115. 30
  116. 29
  117. 34
  118. 30
  119. 30
  120. 31
  121. 37
  122. 29
  123. 28
  124. 28
  125. 21
  126. 32
  127. 20
  128. 28
  129. 31
  130. 28
  131. 28
  132. 31
  133. 26
  134. 31
  135. 28
  136. 32
  137. 29
  138. 31
  139. 30
  140. 34
  141. 27
  142. 30
  143. 30
  144. 31
  145. 23
  146. 32
  147. 30
  148. 30
  149. 33
  150. 35
  151. 28
  152. 24
  153. 29
  154. 27
  155. 22
  156. 31
  157. 24
  158. 24
  159. 22
  160. 32
  161. 27
  162. 28
  163. 24
  164. 25
  165. 21
  166. 24
  167. 23
  168. 21
  169. 30
  170. 27
  171. 21
  172. 28
  173. 25
  174. 26
  175. 20
  176. 26
  177. 27
  178. 28
  179. 29
  180. 20
  181. 32
  182. 29
  183. 31
  184. 29
  185. 27
  186. 33
  187. 31
  188. 32
  189. 27
  190. 36
  191. 35
  192. 26
  193. 29
  194. 27
  195. 32
  196. 25
  197. 30
  198. 33
  199. 24
  200. 28
  201. 33
  202. 21
  203. 31
  204. 33
  205. 33
  206. 32
  207. 30
  208. 29
  209. 19
  210. 24
  211. 28
  212. 26
  213. 28
  214. 30
  215. 23
  216. 29
  217. 31
  218. 25
  219. 31
  220. 21
  221. 33
  222. 31
  223. 20
  224. 22
  225. 23
  226. 25
  227. 31
  228. 32
  229. 32
  230. 28
  231. 20
  232. 31
  233. 37
  234. 27
  235. 27
  236. 35
  237. 33
  238. 28
  239. 26
  240. 28
  241. 21
  242. 31
  243. 33
  244. 31
  245. 30
  246. 26
  247. 35
  248. 28
  249. 26
  250. 22
  251. 27
  252. 26
  253. 30
  254. 28
  255. 29
  256. 31
  257. 32
  258. 33
  259. 22
  260. 21
  261. 24
  262. 20
  263. 34
  264. 24
  265. 29
  266. 30
  267. 36
  268. 30
  269. 29
  270. 30
  271. 29
  272. 28
  273. 29
  274. 29
  275. 33
  276. 40
  277. 38
  278. 35
  279. 38
  280. 29
  281. 24
  282. 20
  283. 24
  284. 31
  285. 25
  286. 28
  287. 20
  288. 26
  289. 29
  290. 24
  291. 29
  292. 26
  293. 27
  294. 23
  295. 30
  296. 25
  297. 29
  298. 25
  299. 33
  300. 29
  301. 30
  302. 31
  303. 27
  304. 31
  305. 27
  306. 24
  307. 22
  308. 25
  309. 33
  310. 31
  311. 31
  312. 27
  313. 28
  314. 21
  315. 34
  316. 21
  317. 20
  318. 28
  319. 25
  320. 22
  321. 31
  322. 22
  323. 33
  324. 25
  325. 34
  326. 24
  327. 27
  328. 32
  329. 23
  330. 30
  331. 33
  332. 28
  333. 32
  334. 34
  335. 27
  336. 29
  337. 34
  338. 34
  339. 28
  340. 36
  341. 33
  342. 32
  343. 26
  344. 36
  345. 30
  346. 31
  347. 37
  348. 35
  349. 29
  350. 26
  351. 36
  352. 32
  353. 29
  354. 25
  355. 32
  356. 21
  357. 27
  358. 32
  359. 33
  360. 21
  361. 23
  362. 32
  363. 30
  364. 31
  365. 22
  366. 34
  367. 28
  368. 22
  369. 32
  370. 26
  371. 22
  372. 28
  373. 34
  374. 33
  375. 26
  376. 30
  377. 26
  378. 29
  379. 22
  380. 26
  381. 34
  382. 29
  383. 34
  384. 37
  385. 27
  386. 39
  387. 28
  388. 25
  389. 27
  390. 32
  391. 30
  392. 29
  393. 22
  394. 26
  395. 28
  396. 23
  397. 24
  398. 20
  399. 20
  400. 35

当然、行番号でも指定可能です。データフレームの変数名[行番号,]という形です。

例えば、3行目のデータを取り出すにはdf[3,]となります。

[29]:
# 3行目取り出し
df[3,]
A data.frame: 1 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
3Aaron Mooy306533568001990/09/15Premier League2018/2019MidfielderHuddersfield Town232711901.78518058223270.15144233-13

複数行を取り出すことも可能です。その場合、取り出したい行番号をc関数でまとめて指定します。

例えば3, 10, 50行目のデータが欲しい時はdf[c(3,10,50), ]となります。

[30]:
# 3,10,50行目取り出し
df[c(3,10,50), ]
A data.frame: 3 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
3Aaron Mooy 306533568001990/09/15Premier League2018/2019MidfielderHuddersfield Town232711901.78518058223270.15144233-1 3
10Adalberto Peñaranda Maestre238650368001997/05/31Premier League2018/2019Forward Watford 0 00.00 0 0 0 00.00 -1 -1-1-1
50Andy Carroll 326000480001989/01/06Premier League2018/2019Forward West Ham United 454 1801.197638227 00.40270326-117

行番号・列番号の両者を指定することも可能です。

3行目5列目の値を取り出すにはdf[3,5]となります。

[31]:
# 3行5列目取り出し
df[3,5]
'Premier League'

この様な操作で取り出してきた値に、別の関数を適用することも可能です。

例えば最初の方に扱ったsummary関数を2列目のデータ(ageの列)に適用する場合は

df_2 <- df[,2]
summary(df_2)

や、1行にまとめてしまって

summary(df[,2])

という形で実行できます。

[32]:
# 2列目にsummary関数を使用
summary(df[,2])
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
    0.0    25.0    28.0    28.1    31.0    41.0

同じような形で特定の列の平均値をmean関数で求めたり、合計値をsum関数で求めることも可能です。

2.7.3. 条件に基づくデータ抽出

もう少し複雑なデータの抽出方法として、条件に基づく方法があります。

例えば

  • "position"が"Defender"のデータを取り出したい

  • "age"が20以下のデータを取り出したい

等です。

この様な場合は、比較演算子==>=などを活用します。

2.7.3.1. 比較演算子

Rでは==>=(大なりイコール)等を使用して値を比較できます。

  • == : 値が同じかどうか調べる

  • >, <, >=, <= : 大きさの比較

[33]:
5 == 4
FALSE
[34]:
5 >= 2
TRUE

これをデータフレームの特定の列に適用すると、すべての値に対して比較を行ってくれます。

例えば、ageの列を取り出して、20以下かどうかの比較をdf$age <= 20という形でしてみると

20以下かどうかTRUE, FALSEで帰ってきます。

[35]:
df$age <= 20
  1. FALSE
  2. FALSE
  3. FALSE
  4. FALSE
  5. TRUE
  6. FALSE
  7. FALSE
  8. FALSE
  9. FALSE
  10. FALSE
  11. FALSE
  12. FALSE
  13. FALSE
  14. FALSE
  15. FALSE
  16. FALSE
  17. FALSE
  18. FALSE
  19. FALSE
  20. FALSE
  21. FALSE
  22. FALSE
  23. FALSE
  24. FALSE
  25. FALSE
  26. FALSE
  27. FALSE
  28. FALSE
  29. FALSE
  30. FALSE
  31. FALSE
  32. FALSE
  33. FALSE
  34. FALSE
  35. TRUE
  36. FALSE
  37. FALSE
  38. FALSE
  39. FALSE
  40. FALSE
  41. FALSE
  42. FALSE
  43. FALSE
  44. FALSE
  45. FALSE
  46. FALSE
  47. FALSE
  48. FALSE
  49. FALSE
  50. FALSE
  51. TRUE
  52. FALSE
  53. FALSE
  54. FALSE
  55. FALSE
  56. FALSE
  57. FALSE
  58. FALSE
  59. FALSE
  60. FALSE
  61. FALSE
  62. FALSE
  63. FALSE
  64. FALSE
  65. FALSE
  66. FALSE
  67. FALSE
  68. FALSE
  69. FALSE
  70. FALSE
  71. TRUE
  72. FALSE
  73. FALSE
  74. FALSE
  75. FALSE
  76. FALSE
  77. FALSE
  78. FALSE
  79. FALSE
  80. FALSE
  81. FALSE
  82. FALSE
  83. FALSE
  84. FALSE
  85. FALSE
  86. FALSE
  87. FALSE
  88. FALSE
  89. FALSE
  90. FALSE
  91. FALSE
  92. FALSE
  93. TRUE
  94. FALSE
  95. FALSE
  96. FALSE
  97. FALSE
  98. FALSE
  99. FALSE
  100. FALSE
  101. FALSE
  102. FALSE
  103. FALSE
  104. FALSE
  105. FALSE
  106. FALSE
  107. FALSE
  108. FALSE
  109. FALSE
  110. FALSE
  111. FALSE
  112. FALSE
  113. FALSE
  114. FALSE
  115. FALSE
  116. FALSE
  117. FALSE
  118. FALSE
  119. FALSE
  120. FALSE
  121. FALSE
  122. FALSE
  123. FALSE
  124. FALSE
  125. FALSE
  126. FALSE
  127. TRUE
  128. FALSE
  129. FALSE
  130. FALSE
  131. FALSE
  132. FALSE
  133. FALSE
  134. FALSE
  135. FALSE
  136. FALSE
  137. FALSE
  138. FALSE
  139. FALSE
  140. FALSE
  141. FALSE
  142. FALSE
  143. FALSE
  144. FALSE
  145. FALSE
  146. FALSE
  147. FALSE
  148. FALSE
  149. FALSE
  150. FALSE
  151. FALSE
  152. FALSE
  153. FALSE
  154. FALSE
  155. FALSE
  156. FALSE
  157. FALSE
  158. FALSE
  159. FALSE
  160. FALSE
  161. FALSE
  162. FALSE
  163. FALSE
  164. FALSE
  165. FALSE
  166. FALSE
  167. FALSE
  168. FALSE
  169. FALSE
  170. FALSE
  171. FALSE
  172. FALSE
  173. FALSE
  174. FALSE
  175. TRUE
  176. FALSE
  177. FALSE
  178. FALSE
  179. FALSE
  180. TRUE
  181. FALSE
  182. FALSE
  183. FALSE
  184. FALSE
  185. FALSE
  186. FALSE
  187. FALSE
  188. FALSE
  189. FALSE
  190. FALSE
  191. FALSE
  192. FALSE
  193. FALSE
  194. FALSE
  195. FALSE
  196. FALSE
  197. FALSE
  198. FALSE
  199. FALSE
  200. FALSE
  201. FALSE
  202. FALSE
  203. FALSE
  204. FALSE
  205. FALSE
  206. FALSE
  207. FALSE
  208. FALSE
  209. TRUE
  210. FALSE
  211. FALSE
  212. FALSE
  213. FALSE
  214. FALSE
  215. FALSE
  216. FALSE
  217. FALSE
  218. FALSE
  219. FALSE
  220. FALSE
  221. FALSE
  222. FALSE
  223. TRUE
  224. FALSE
  225. FALSE
  226. FALSE
  227. FALSE
  228. FALSE
  229. FALSE
  230. FALSE
  231. TRUE
  232. FALSE
  233. FALSE
  234. FALSE
  235. FALSE
  236. FALSE
  237. FALSE
  238. FALSE
  239. FALSE
  240. FALSE
  241. FALSE
  242. FALSE
  243. FALSE
  244. FALSE
  245. FALSE
  246. FALSE
  247. FALSE
  248. FALSE
  249. FALSE
  250. FALSE
  251. FALSE
  252. FALSE
  253. FALSE
  254. FALSE
  255. FALSE
  256. FALSE
  257. FALSE
  258. FALSE
  259. FALSE
  260. FALSE
  261. FALSE
  262. TRUE
  263. FALSE
  264. FALSE
  265. FALSE
  266. FALSE
  267. FALSE
  268. FALSE
  269. FALSE
  270. FALSE
  271. FALSE
  272. FALSE
  273. FALSE
  274. FALSE
  275. FALSE
  276. FALSE
  277. FALSE
  278. FALSE
  279. FALSE
  280. FALSE
  281. FALSE
  282. TRUE
  283. FALSE
  284. FALSE
  285. FALSE
  286. FALSE
  287. TRUE
  288. FALSE
  289. FALSE
  290. FALSE
  291. FALSE
  292. FALSE
  293. FALSE
  294. FALSE
  295. FALSE
  296. FALSE
  297. FALSE
  298. FALSE
  299. FALSE
  300. FALSE
  301. FALSE
  302. FALSE
  303. FALSE
  304. FALSE
  305. FALSE
  306. FALSE
  307. FALSE
  308. FALSE
  309. FALSE
  310. FALSE
  311. FALSE
  312. FALSE
  313. FALSE
  314. FALSE
  315. FALSE
  316. FALSE
  317. TRUE
  318. FALSE
  319. FALSE
  320. FALSE
  321. FALSE
  322. FALSE
  323. FALSE
  324. FALSE
  325. FALSE
  326. FALSE
  327. FALSE
  328. FALSE
  329. FALSE
  330. FALSE
  331. FALSE
  332. FALSE
  333. FALSE
  334. FALSE
  335. FALSE
  336. FALSE
  337. FALSE
  338. FALSE
  339. FALSE
  340. FALSE
  341. FALSE
  342. FALSE
  343. FALSE
  344. FALSE
  345. FALSE
  346. FALSE
  347. FALSE
  348. FALSE
  349. FALSE
  350. FALSE
  351. FALSE
  352. FALSE
  353. FALSE
  354. FALSE
  355. FALSE
  356. FALSE
  357. FALSE
  358. FALSE
  359. FALSE
  360. FALSE
  361. FALSE
  362. FALSE
  363. FALSE
  364. FALSE
  365. FALSE
  366. FALSE
  367. FALSE
  368. FALSE
  369. FALSE
  370. FALSE
  371. FALSE
  372. FALSE
  373. FALSE
  374. FALSE
  375. FALSE
  376. FALSE
  377. FALSE
  378. FALSE
  379. FALSE
  380. FALSE
  381. FALSE
  382. FALSE
  383. FALSE
  384. FALSE
  385. FALSE
  386. FALSE
  387. FALSE
  388. FALSE
  389. FALSE
  390. FALSE
  391. FALSE
  392. FALSE
  393. FALSE
  394. FALSE
  395. FALSE
  396. FALSE
  397. FALSE
  398. TRUE
  399. TRUE
  400. FALSE

データフレームでは、df[c(3,10,50), ]という形で、行番号のところにc(3, 10, 50)と入れてあげることで複数行のデータを抽出できました。

このTRUE, FALSEのリストを行番号の代わりに入れることで、TRUEの行だけを取り出す、という事が出来ます。

df[df$age <= 20, ]という形です。

[36]:
# age <= 20 の行を取り出し
df[df$age <= 20, ]
A data.frame: 21 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
5Aaron Rowe 20 9682848002000/09/07Premier League2018/2019Forward Huddersfield Town 69 141.306935 0 00.00 -1 -1 -131
35Ali Koiki 20 9669024002000/08/22Premier League2018/2019Defender Burnley 0 00.00 0 0 0 00.00 -1 -1 -1-1
51Angel Gomes 20 9676800002000/08/31Premier League2018/2019MidfielderManchester United 25 253.602513 0 00.00 -1 -1 -119
71Bakayo Sako 0 01970/01/01Premier League2018/2019MidfielderArsenal 7 70.00 0 7 0 00.00 -1 -1 -117
93Callum Hudson-Odoi 20 9735552002000/11/07Premier League2018/2019MidfielderChelsea 391 2671.157839 03910.00277 54 -116
127Curtis Jones 20 9808128002001/01/30Premier League2018/2019MidfielderLiverpool 0 00.00 0 0 0 00.00 -1 -1 -1-1
175Emile Smith Rowe 20 9647424002000/07/28Premier League2018/2019MidfielderArsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
180Ethan Ampadu 20 9688896002000/09/14Premier League2018/2019MidfielderChelsea 0 00.00 0 0 0 00.00 -1 -1 -1-1
220Harvey Elliot 0 01970/01/01Premier League2018/2019Forward Fulham 18 160.00 0 9 0 00.00 -1 -1 -128
244James Garner 20 9844416002001/03/13Premier League2018/2019Defender Manchester United 0 00.00 0 0 0 00.00 -1 -1 -1-1
316Kayne Ramsey 20 9711360002000/10/10Premier League2018/2019MidfielderSouthampton 90 903.003090 0 00.00 -1 -1 -119
366Marc Guehi 20 9634464002000/07/13Premier League2018/2019Defender Chelsea 0 00.00 0 0 0 00.00 -1 -1 -1-1
381Mason Greenwood 1910018944002001/10/01Premier League2018/2019MidfielderManchester United 115 1051.575838 0 00.00 -1 -1 -127
395Matty Daly 20 9841824002001/03/10Premier League2018/2019MidfielderHuddersfield Town 73 491.237337 0 00.00 -1 -1 -118
403Michael Obafemi 20 9628416002000/07/06Premier League2018/2019Forward Southampton 134 641.3467221341340.67 -1 -1 -116
434Oliver Skipp 20 9690624002000/09/16Premier League2018/2019MidfielderTottenham Hotspur 216 1910.00 027 0 00.00 -1 -1 -116
454Philip Foden 20 9594720002000/05/28Premier League2018/2019MidfielderManchester City 327 2790.00 025 0 00.00 67386 -111
459Rafael Euclides Soares Camacho20 9589536002000/05/22Premier League2018/2019MidfielderLiverpool 0 00.00 0 0 0 00.00 -1 -1 -1-1
489Ryan Sessegnon 20 9586080002000/05/18Premier League2018/2019Defender Fulham 229810952.274066 03830.00182 53168 6
570Zechariah Medley 20 9629280002000/07/07Premier League2018/2019Defender Arsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
571Zeze Steven Sessegnon 20 9586080002000/05/18Premier League2018/2019Defender Fulham 0 00.00 0 0 0 00.00 -1 -1 -1-1

このことを利用して、

  • "position"が"Defender"のデータを取り出したい

  • "age"が20以下のデータを取り出したい

はそれぞれ

  • df[df$position == "Defender", ]

  • df[df$age <= 20, ]

という形で抽出できます。

さらに、ある条件に当てはまるデータの中で特定の列を取り出したい場合、たとえば

  • "position"が"Defender"なデータのage列を取り出したい

のような場合です。

この場合は、行番号を条件で指定したうえで、列名を指定します。

df[df$position == "Defender", "age"]

df[df$position == "Defender", ]$age

で取り出せます。

[37]:
# Defenderのage列取り出し
df[df$position == "Defender", "age"]
  1. 31
  2. 27
  3. 29
  4. 34
  5. 28
  6. 23
  7. 27
  8. 20
  9. 24
  10. 27
  11. 32
  12. 21
  13. 26
  14. 28
  15. 35
  16. 27
  17. 26
  18. 24
  19. 27
  20. 28
  21. 31
  22. 23
  23. 21
  24. 26
  25. 25
  26. 32
  27. 40
  28. 24
  29. 26
  30. 26
  31. 21
  32. 29
  33. 29
  34. 31
  35. 34
  36. 27
  37. 31
  38. 23
  39. 31
  40. 34
  41. 30
  42. 30
  43. 31
  44. 32
  45. 28
  46. 28
  47. 29
  48. 30
  49. 34
  50. 31
  51. 33
  52. 28
  53. 24
  54. 27
  55. 31
  56. 22
  57. 32
  58. 28
  59. 26
  60. 26
  61. 28
  62. 29
  63. 29
  64. 31
  65. 32
  66. 26
  67. 29
  68. 32
  69. 35
  70. 30
  71. 28
  72. 26
  73. 24
  74. 24
  75. 27
  76. 24
  77. 27
  78. 20
  79. 28
  80. 32
  81. 25
  82. 24
  83. 33
  84. 28
  85. 26
  86. 29
  87. 28
  88. 31
  89. 27
  90. 23
  91. 29
  92. 31
  93. 26
  94. 25
  95. 24
  96. 27
  97. 33
  98. 22
  99. 36
  100. 23
  101. 23
  102. 30
  103. 30
  104. 23
  105. 25
  106. 26
  107. 30
  108. 23
  109. 35
  110. 34
  111. 36
  112. 32
  113. 21
  114. 29
  115. 27
  116. 25
  117. 31
  118. 20
  119. 25
  120. 30
  121. 33
  122. 30
  123. 29
  124. 24
  125. 30
  126. 29
  127. 25
  128. 31
  129. 33
  130. 31
  131. 23
  132. 31
  133. 32
  134. 28
  135. 35
  136. 35
  137. 26
  138. 30
  139. 33
  140. 22
  141. 36
  142. 30
  143. 30
  144. 29
  145. 35
  146. 38
  147. 29
  148. 24
  149. 27
  150. 25
  151. 22
  152. 31
  153. 31
  154. 20
  155. 22
  156. 34
  157. 27
  158. 32
  159. 30
  160. 33
  161. 28
  162. 29
  163. 28
  164. 36
  165. 32
  166. 36
  167. 37
  168. 35
  169. 29
  170. 27
  171. 33
  172. 21
  173. 23
  174. 32
  175. 28
  176. 22
  177. 26
  178. 22
  179. 28
  180. 26
  181. 34
  182. 29
  183. 37
  184. 27
  185. 30
  186. 22
  187. 26
  188. 20
  189. 20

2.7.3.2. 複数条件による抽出

条件を重ねることも可能です。例えば

  • "position"が"Defender"かつ"age"が20以下のデータを取り出したい

  • "position"が"Goalkeeper"または"age"が20以下のデータを取り出したい

等です。

条件を重ねるには、&|を使用します。

  • (条件1)&(条件2) … 条件1かつ条件2

  • (条件1)|(条件2) … 条件1または条件2

"position"が"Defender"かつ"age"が20以下の場合は、

(df$position == "Defender") & (df$age <= 20)という形です。

これを行番号の代わりに指定します。

[38]:
# Defenderかつage20歳以下
df[(df$position == "Defender") & (df$age <= 20), ]
A data.frame: 6 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
35Ali Koiki 209669024002000/08/22Premier League2018/2019DefenderBurnley 0 00.00 0 00 00 -1-1 -1-1
244James Garner 209844416002001/03/13Premier League2018/2019DefenderManchester United 0 00.00 0 00 00 -1-1 -1-1
366Marc Guehi 209634464002000/07/13Premier League2018/2019DefenderChelsea 0 00.00 0 00 00 -1-1 -1-1
489Ryan Sessegnon 209586080002000/05/18Premier League2018/2019DefenderFulham 229810952.2740660383018253168 6
570Zechariah Medley 209629280002000/07/07Premier League2018/2019DefenderArsenal 0 00.00 0 00 00 -1-1 -1-1
571Zeze Steven Sessegnon209586080002000/05/18Premier League2018/2019DefenderFulham 0 00.00 0 00 00 -1-1 -1-1

"position"が"Goalkeeper"または"age"が20以下の場合は、

(df$position == "Goalkeeper") | (df$age <= 20)となります。

[39]:
# Goalkeeperまたはage20歳以下
df[(df$position == "Goalkeeper") | (df$age <= 20), ]
A data.frame: 78 × 47
full_nameagebirthdaybirthday_GMTleagueseasonpositionCurrent.Clubminutes_played_overallminutes_played_homeconceded_per_90_overallmin_per_conceded_overallmin_per_matchmin_per_card_overallmin_per_assist_overallcards_per_90_overallrank_in_league_top_attackersrank_in_league_top_midfieldersrank_in_league_top_defendersrank_in_club_top_scorer
<chr><int><int><chr><chr><chr><chr><chr><int><int><dbl><int><int><int><int><dbl><int><int><int><int>
5Aaron Rowe 209682848002000/09/07Premier League2018/2019Forward Huddersfield Town 69 141.30 6935 0 00.00 -1 -1 -131
18Adrián San Miguel del Castillo345366304001987/01/03Premier League2018/2019GoalkeeperWest Ham United 0 00.00 0 0 0 00.00 -1 -1 -1-1
24Alex McCarthy 316286464001989/12/03Premier League2018/2019GoalkeeperSouthampton 225011701.48 61902250 00.0437236511421
27Alex Smithies 316365952001990/03/05Premier League2018/2019GoalkeeperCardiff City 0 00.00 0 0 0 00.00 -1 -1 -1-1
34Alfie Whiteman 229072864001998/10/02Premier League2018/2019GoalkeeperTottenham Hotspur 0 00.00 0 0 0 00.00 -1 -1 -1-1
35Ali Koiki 209669024002000/08/22Premier League2018/2019Defender Burnley 0 00.00 0 0 0 00.00 -1 -1 -1-1
37Alisson Becker 287179840001992/10/02Premier League2018/2019GoalkeeperLiverpool 342017100.50180903420 00.03417387 316
51Angel Gomes 209676800002000/08/31Premier League2018/2019MidfielderManchester United 25 253.60 2513 0 00.00 -1 -1 -119
53Angus Gunn 258222688001996/01/22Premier League2018/2019GoalkeeperSouthampton 1080 5401.42 6490 0 00.0037633910425
60Arijanet Muric 229103968001998/11/07Premier League2018/2019GoalkeeperManchester City 0 00.00 0 0 0 00.00 -1 -1 -1-1
63Artur Boruc 413198528001980/02/20Premier League2018/2019GoalkeeperAFC Bournemouth 1080 5401.42 6490 540 00.1736139410020
67Asmir Begović 335511456001987/06/20Premier League2018/2019GoalkeeperAFC Bournemouth 216010801.83 4990 0 00.0035827315419
71Bakayo Sako 0 01970/01/01Premier League2018/2019MidfielderArsenal 7 70.00 0 7 0 00.00 -1 -1 -117
74Ben Foster 374181760001983/04/03Premier League2018/2019GoalkeeperWatford 342017101.50 60903420 00.0336535311618
76Ben Hamer 335643648001987/11/20Premier League2018/2019GoalkeeperHuddersfield Town 553 2833.25 2879 0 00.0032734817514
86Bernd Leno 296996672001992/03/04Premier League2018/2019GoalkeeperArsenal 283513951.24 7389 0 00.00390413 7623
88Brian Murphy 374211136001983/05/07Premier League2018/2019GoalkeeperCardiff City 0 00.00 0 0 0 00.00 -1 -1 -1-1
93Callum Hudson-Odoi 209735552002000/11/07Premier League2018/2019MidfielderChelsea 391 2671.15 7839 0 3910.00277 54 -116
121Claudio Andrés Bravo Muñoz 374190400001983/04/13Premier League2018/2019GoalkeeperManchester City 0 00.00 0 0 0 00.00 -1 -1 -1-1
127Curtis Jones 209808128002001/01/30Premier League2018/2019MidfielderLiverpool 0 00.00 0 0 0 00.00 -1 -1 -1-1
130Damián Emiliano Martínez 287153920001992/09/02Premier League2018/2019GoalkeeperArsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
141Danny Ward 277407072001993/06/22Premier League2018/2019GoalkeeperLeicester City 0 00.00 0 0 0 00.00 -1 -1 -1-1
146David Button 326045408001989/02/27Premier League2018/2019GoalkeeperBrighton & Hove Albion 360 1801.25 7290 0 00.00404327 7914
147David de Gea 306579360001990/11/07Premier League2018/2019GoalkeeperManchester United 342017101.34 67903420 00.03310419 9118
170Ederson 277455456001993/08/17Premier League2018/2019GoalkeeperManchester City 342017100.6114990171034200.05366240 1321
175Emile Smith Rowe 209647424002000/07/28Premier League2018/2019MidfielderArsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
180Ethan Ampadu 209688896002000/09/14Premier League2018/2019MidfielderChelsea 0 00.00 0 0 0 00.00 -1 -1 -1-1
186Fabricio Martín Agosto Ramírez335679072001987/12/31Premier League2018/2019GoalkeeperFulham 180 902.50 3690 0 00.00 -1 -1 -113
198Fraser Forster 335745600001988/03/17Premier League2018/2019GoalkeeperSouthampton 90 03.00 3090 0 00.00 -1 -1 -129
199Freddie Woodman 248574336001997/03/04Premier League2018/2019GoalkeeperNewcastle United 0 00.00 0 0 0 00.00 -1 -1 -1-1
361Maarten Stekelenburg 38 4015008001982/09/22Premier League2018/2019GoalkeeperEverton 0 00.00 0 0 0 00.00 -1 -1 -1-1
366Marc Guehi 20 9634464002000/07/13Premier League2018/2019Defender Chelsea 0 00.00 0 0 0 00.00 -1 -1 -1-1
370Marcus Bettinelli 28 7066656001992/05/24Premier League2018/2019GoalkeeperFulham 630 2702.71 3390 630 00.1429628317414
374Mark Travers 21 9269856001999/05/18Premier League2018/2019GoalkeeperAFC Bournemouth 180 902.50 3690 0 00.00 -1 -1 -128
378Martin Dúbravka 32 6008256001989/01/15Premier League2018/2019GoalkeeperNewcastle United 342017101.16 78903420 00.03345317 5818
381Mason Greenwood 1910018944002001/10/01Premier League2018/2019MidfielderManchester United 115 1051.57 5838 0 00.00 -1 -1 -127
385Mathew Ryan 28 7026912001992/04/08Premier League2018/2019GoalkeeperBrighton & Hove Albion 306015301.53 59901530 00.0639838912215
395Matty Daly 20 9841824002001/03/10Premier League2018/2019MidfielderHuddersfield Town 73 491.23 7337 0 00.00 -1 -1 -118
403Michael Obafemi 20 9628416002000/07/06Premier League2018/2019Forward Southampton 134 641.34 6722 1341340.67 -1 -1 -116
405Michel Vorm 37 4354560001983/10/20Premier League2018/2019GoalkeeperTottenham Hotspur 180 902.00 4590 0 00.00 -1 -1 -122
428Neil Leonard Dula Etheridge 31 6343488001990/02/07Premier League2018/2019GoalkeeperCardiff City 342017101.61 56901710 00.0536339213417
434Oliver Skipp 20 9690624002000/09/16Premier League2018/2019MidfielderTottenham Hotspur 216 1910.00 027 0 00.00 -1 -1 -116
445Paulo Dino Gazzaniga 29 6943104001992/01/02Premier League2018/2019GoalkeeperTottenham Hotspur 270 00.3327090 0 00.00 -1 -1 -115
449Petr Čech 38 3907008001982/05/20Premier League2018/2019GoalkeeperArsenal 585 3151.23 7384 0 00.00384377 7120
454Philip Foden 20 9594720002000/05/28Premier League2018/2019MidfielderManchester City 327 2790.00 025 0 00.00 67386 -111
459Rafael Euclides Soares Camacho20 9589536002000/05/22Premier League2018/2019MidfielderLiverpool 0 00.00 0 0 0 00.00 -1 -1 -1-1
481Rui Pedro dos Santos Patrício 33 5718816001988/02/15Premier League2018/2019GoalkeeperWolverhampton Wanderers333016201.16 7790 0 00.00405328 5619
488Ryan Schofield 21 9448704001999/12/11Premier League2018/2019GoalkeeperHuddersfield Town 0 00.00 0 0 0 00.00 -1 -1 -1-1
489Ryan Sessegnon 20 9586080002000/05/18Premier League2018/2019Defender Fulham 229810952.27 4066 03830.00182 53168 6
506Sergio Germán Romero 34 5409504001987/02/22Premier League2018/2019GoalkeeperManchester United 0 00.00 0 0 0 00.00 -1 -1 -1-1
507Sergio Rico 27 7468416001993/09/01Premier League2018/2019GoalkeeperFulham 261013501.83 49902610 00.0332040615321
513Simon Mignolet 33 5736096001988/03/06Premier League2018/2019GoalkeeperLiverpool 0 00.00 0 0 0 00.00 -1 -1 -1-1
538Tom Heaton 34 5139072001986/04/15Premier League2018/2019GoalkeeperBurnley 1710 9001.21 7490 570 00.16382354 6818
545Vicente Guaita 34 5372352001987/01/10Premier League2018/2019GoalkeeperCrystal Palace 175510351.08 8488 878 00.10325352 4519
555Wayne Hennessey 34 5384448001987/01/24Premier League2018/2019GoalkeeperCrystal Palace 1575 6751.31 6888 0 00.00321404 8713
558Wilfredo Daniel Caballero 39 3704832001981/09/28Premier League2018/2019GoalkeeperChelsea 180 900.00 090 0 00.00 -1 -1 -119
561Will Norris 27 7451136001993/08/12Premier League2018/2019GoalkeeperWolverhampton Wanderers 0 00.00 0 0 0 00.00 -1 -1 -1-1
570Zechariah Medley 20 9629280002000/07/07Premier League2018/2019Defender Arsenal 0 00.00 0 0 0 00.00 -1 -1 -1-1
571Zeze Steven Sessegnon 20 9586080002000/05/18Premier League2018/2019Defender Fulham 0 00.00 0 0 0 00.00 -1 -1 -1-1
572Łukasz Fabiański 35 4826304001985/04/18Premier League2018/2019GoalkeeperWest Ham United 342017101.26 7190 0 00.00391343 8119

"position"が"Defender"かつ"age"が20以下goals_overall(得点数)であれば

df[(df$position == "Defender") & (df$age <= 20), 'goals_overall']となります。

[40]:
# Defenderかつ20歳以下の選手のgoals_overall(総ゴール数)
df[(df$position == "Defender") & (df$age <= 20), "goals_overall"]
  1. 0
  2. 0
  3. 0
  4. 2
  5. 0
  6. 0

今後の講義では複数のデータを比較することが多くなるので、このような形でデータをいくつか抽出し、統計的に比較を行う関数に適用する、という流れが多くなるかと思います。

2.8. 関数の作成

logsummary, read.csv等、様々な関数を使用してきましたが、Rでは自分独自の関数を作ることも出来ます。

自作の関数を作るには、functionという関数を使用します。

例えば平均値を計算するmeanという関数を自作するコードを書くと以下の様になります。

mean_zisaku <- function(x) {
  goukei <- sum(x)               # 合計値を計算
  ans <- goukei / length(x)      # 要素の数で合計値を割る
  return(ans)                    # 計算結果を返す
}
[41]:
mean_zisaku <- function(x) {
  goukei <- sum(x)
  ans <- goukei / length(x)
  return(ans)
}

mean関数と今回作成したmean_zisaku関数で結果が同じになるか確認してみましょう。

x <- c(12, 14, 18, 26, 30)
mean(x) または mean_zisaku(x)
[42]:
# mean_zisaku関数の使用
x <- c(12, 14, 18, 26, 30)
mean_zisaku(x)
20

2.9. パッケージの利用

自分で関数を作ることが出来るということを説明しましたが、他の人が作った関数を利用することも出来ます。

初期状態のRでも様々な統計手法を扱うことは可能ですが、他の人が作成した関数を活用することでより多様な・高度な統計解析を行うことが可能になります。

その様な関数はパッケージという形で用意されています。機械学習用の関数がまとめられたパッケージや、ゲノム配列を処理する関数がまとめられたパッケージ、グラフ描写の関数がまとめられたパッケージなど、目的に応じた様々なパッケージがあります。

参考: パッケージ一覧

パッケージを利用する手順は下記の順になります。

  1. 目的のパッケージをインストールする

  2. パッケージを読み込む

  3. パッケージにまとめられていた関数が使用可能になる

まず、パッケージのインストールですが、install.packages("欲しいパッケージ名")という関数でインストールできます。

今回はggplot2というグラフ描写用のパッケージをインストールしてみましょう。

install.packages("ggplot2")でインストールできます。

[43]:
install.packages("ggplot2")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)

続いて、インストールしたパッケージに含まれる関数を使用するには、パッケージを読み込ませる必要があります。

library(パッケージ名)関数で読み込めます。

今回のパッケージにはggplot()という関数が入っていますが、パッケージを読み込まずに、ggplot()と入力すると…

[44]:
ggplot()
Error in ggplot(): could not find function "ggplot"
Traceback:

エラーが出たかと思います。

まずlibrary(ggplot2)と書いてパッケージを読み込ませてから、

ggplot()関数を使用するとちゃんと使えるようになっているのが分かるかと思います。

[45]:
library(ggplot2)
ggplot()
../_images/notebooks_chapter2_100_0.png

今回はggplot()関数で白いキャンバスを描いただけですが、ggplot2は非常に強力なグラフ描写パッケージです。

また今後の講義でこのパッケージの使い方は扱う予定です。

講義の前半部分はRにもともと備わっている統計手法の関数で十分事足りますが、

高度な線形モデルや機械学習を扱う際に、そういった解析が容易に行えるパッケージを使用する予定です。

2.10. 課題と今後の課題の提出方法

課題のノートブックへのリンク

今後の講義の課題の一部は、Google Colaboratoryで課題を解き、提出してもらう場合があります。

  1. 課題のノートブックを開く

  2. 課題を解く(コードを記述し、実行して結果を表示する)

  3. 2.を実行した状態のページをPDFとして保存

  • 左上のファイル→印刷→PDFに保存

このPDFをPandaから提出してもらう形になります。

title