8/ データ構造
関西大学総合情報学部
"Cat"や5も長さ1のベクトルであり、原子ベクトル(atomic vector)とも呼ばれ、中でもnumeric型の長さ1のベクトルはスカラー(scalar)とも呼ばれる。

本講義で使うデータ構造は主にベクトル(vector)とデータ・フレーム(data.frame)とその拡張版のティブル(tibble)のみであるため、行列(matrix)、配列(array)、リスト(array)の詳細な説明は割愛する。
同じデータ型が一つ以上格納されているオブジェクト
[1] "A" "B" "C" "1" "2" "3"
[1] 10 20 1 0
データ型、長さなど
class(オブジェクト名): データ型length(オブジェクト名): ベクトルの長さ(要素数)nchar(オブジェクト名): Character型の場合、各要素の文字数要素の抽出
オブジェクト名[n]: n番目の要素を抽出オブジェクト名[n:k]: n番目からk番目の要素を抽出オブジェクト名[c(i, j, k, ...)]: i、j、k、…番目の要素を抽出オブジェクト名[c(TRUE, FALSE, TRUE, ...)]: TRUEに対応する位置の要素を抽出 [,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
matrix()関数を使用
nrow引数で行列の行数を指定本講義では使用しないため、説明は割愛する。
本講義では使用しないため、説明は割愛する。
| 演算子/関数 | 説明 |
|---|---|
+ |
行列の足し算 |
- |
行列の引き算 |
%*% |
行列の掛け算 |
/ |
行列の割り算 |
* |
行列のアダマール積 (Hadamard product) |
t(オブジェクト名) |
行列の転置 |
qr(オブジェクト名)$rank |
行列の階数 |
solve(オブジェクト名) |
逆行列 |
eigen(オブジェクト名) |
行列の固有値 |
diag(オブジェクト名) |
行列の対角成分 |
行列を重ねたもの
[x, y, z]で指定する必要がある。
zが配列の層 (layer)を意味する

自分で作成する場合
data.frame()、またはtibble()関数を使用
tibble()関数を使う前に{tidyverse}パッケージを読み込むデータ・フレームを直接作成する方法
# A tibble: 4 × 3
Name Foundation Students
<chr> <dbl> <dbl>
1 Kansai 1886 27736
2 Kangaku 1889 23671
3 Doshisha 1875 25974
4 Ritsumeikan 1900 32467
ベクトルから作成する方法
# A tibble: 4 × 4
Name Pop Area Food
<chr> <dbl> <dbl> <chr>
1 Tokyo 1396 2194 Monja
2 Nagoya 755 5173 Tebasaki
3 Osaka 882 1899 Takoyaki
4 Fukuoka 511 4987 Ramen
表形式ファイルの読み込み
read_csv()を使用する前に{tidyverse}を読み込んでおく(今回は読み込み済み)。
Dataフォルダー内のBuildingData.csvを読み込み、my_df3という名のオブジェクトとして格納
dataフォルダーならdata/BuildingData.csv、プロジェクトフォルダーに直接入れたのであればBuildingData.csvのみ# A tibble: 47 × 5
ID Pref Finance Above65 Turnout
<dbl> <chr> <dbl> <dbl> <dbl>
1 1 北海道 0.446 32.3 54.0
2 2 青森県 0.342 33.7 49.5
3 3 岩手県 0.359 33.8 55.4
4 4 宮城県 0.597 28.4 48.8
5 5 秋田県 0.311 37.6 55.6
6 6 山形県 0.362 34.0 61.9
7 7 福島県 0.522 31.8 53.4
8 8 茨城県 0.631 30.3 47.2
9 9 栃木県 0.620 29.6 47.0
10 10 群馬県 0.612 30.9 48.5
# ℹ 37 more rows
class():データ構造の確認
"data.frame"以外にもいくつか出るが、"data.frame"が含まれていればOK"data.frame"に加え、"tbl_df"、"tbl"が含まれる場合、tibble(データフレームの上位互換)であることを意味する。is.data.frame():データ・フレームか否かを判定nrow() / ncol():データ・フレームの行数 / 列数head():最初の6行のみ出力tail():最後の6行を出力
n = 5を追加すると、最初 (最後) の5行を出力(任意の数字)names():変数名のみ出力# A tibble: 10 × 5
ID Pref Finance Above65 Turnout
<dbl> <chr> <dbl> <dbl> <dbl>
1 1 北海道 0.446 32.3 54.0
2 2 青森県 0.342 33.7 49.5
3 3 岩手県 0.359 33.8 55.4
4 4 宮城県 0.597 28.4 48.8
5 5 秋田県 0.311 37.6 55.6
6 6 山形県 0.362 34.0 61.9
7 7 福島県 0.522 31.8 53.4
8 8 茨城県 0.631 30.3 47.2
9 9 栃木県 0.620 29.6 47.0
10 10 群馬県 0.612 30.9 48.5
# A tibble: 47 × 3
Pref Above65 Turnout
<chr> <dbl> <dbl>
1 北海道 32.3 54.0
2 青森県 33.7 49.5
3 岩手県 33.8 55.4
4 宮城県 28.4 48.8
5 秋田県 37.6 55.6
6 山形県 34.0 61.9
7 福島県 31.8 53.4
8 茨城県 30.3 47.2
9 栃木県 29.6 47.0
10 群馬県 30.9 48.5
# ℹ 37 more rows
[1] "tbl_df" "tbl" "data.frame"
[1] "北海道" "青森県" "岩手県" "宮城県" "秋田県" "山形県"
[7] "福島県" "茨城県" "栃木県" "群馬県" "埼玉県" "千葉県"
[13] "東京都" "神奈川県" "新潟県" "富山県" "石川県" "福井県"
[19] "山梨県" "長野県" "岐阜県" "静岡県" "愛知県" "三重県"
[25] "滋賀県" "京都府" "大阪府" "兵庫県" "奈良県" "和歌山県"
[31] "鳥取県" "島根県" "岡山県" "広島県" "山口県" "徳島県"
[37] "香川県" "愛媛県" "高知県" "福岡県" "佐賀県" "長崎県"
[43] "熊本県" "大分県" "宮崎県" "鹿児島県" "沖縄県"
返り値はデータ・フレームでなく、ベクトル
class()はデータ型が出力される。抽出方法によって返り値のデータ構造が異なる。
[]を用いた抽出は返り値がデータ・フレーム$を用いた抽出は返り値がベクトル| コード | 意味 | 返り値 | 備考 |
|---|---|---|---|
データ・フレーム名[i, ] |
i番目の行を抽出 |
データ・フレーム | iは任意のベクトル |
データ・フレーム名[, i] |
i番目の列を抽出 |
データ・フレーム | iは任意のベクトル |
データ・フレーム名$列名 |
当該列を抽出 | ベクトル |