275 Views
February 25, 22
スライド概要
データサイエンス演習(R システムを使用)
https://www.kkaneko.jp/cc/rd/index.html
金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
rd-11. リレーショナル データベースとの連携 データサイエンス演習 (R システムを使用) https://www.kkaneko.jp/de/rd/index.html 金子邦彦 1
Rシステムでのデータの保存 作業空間 (ワークスペース) の保存用ファイル Rシステム リレーショナルデータベース 管理システム テーブルオブジェクトを R データファイル(拡張子: .Rd) へのワークスペースのセーブと CSV ファイルに エクスポート ロード ※1ファイル=1オブジェクト ※1ファイルに, 複数オブジェクト保存可能 2
なぜデータベースシステム • 巨大(メモリに入りきらないくらい)なデータを、 軽快に扱いたい • データの共有、データへの並行アクセスを簡単に 行えるようにしたい 3
リレーショナルデータベースでは リレーショナル・データベースには、データ の種類ごとに分かれた、たくさんのテーブル が格納される ◇ テーブル名: ID 商品 商品 単価 1 みかん 50 2 りんご 100 ◇ テーブル名: 会員 名前 ID 1 A 2 B •4
リレーショナルデータベースのテーブルの例 ◇ テーブル名: 商品 商品 ID データ本体 単価 1 みかん 50 レコード 2 りんご 100 レコード ◇ テーブル名: 会員 名前 ID データ本体 1 2 A B レコード レコード •5
リレーショナルデータベース ◆ テーブル名:会員 1.種類の違うデータは、別のテーブル に分ける 会員番号 2.レコードが、データの基本単位 会員1人 = 1レコード ビデオ1本 = 1レコード 3.データを識別したいときは 主キーを使う. どの会員がどのビデオを借りて いるかの記録にも主キーを使う 氏名 1 2 AA CC 3 4 BB DD ◆ テーブル名:ビデオ ID 名前 1 ハリーポッター 2 ハリーポッター ドラえもん 3 貸出者 1 3 3 6
11-2. Rシステムで リレーショナルデータベース を扱う 7
RSQLite パッケージ 仲立ち Rシステム RSQLite パッケージ リレーショナルデータベース 管理システム SQLite バージョン 3 8
RSQLite パッケージの機能 • SQLite3 にアクセスして、SQLite3 のほぼ全機能 を扱うことができる テーブル定義 テーブル操作(行の挿入、削除、値の変更) SQL問い合わせ • R のテーブルオブジェクトを、SQLite3 の「テー ブル」と相互に変換することが簡単にできる機能 も 仲立ち Rシステム リレーショナルデー タベース 管理システム SQLite バージョン 3 9
R のテーブルオブジェクトと、 SQLite3 の「テーブル」 name apple orange banana price 100 50 230 R のテーブルオブジェクト (コンストラクタと確認表示) 扱いたいデータ テーブル定義と テーブル生成 確認表示 SQLite3 のテーブル 10
RSQLite パッケージのインストール • install.packages("RSQLite") ※ 他のリレーショナルデータベース管理システム MySQL, Oracle, PostgreSQL, SQLServer などを使いたいときは, それぞれ用のパッケージを探して,インストールできる 11
R のテーブルオブジェクトを、SQLite に格納 (そのとき、SQLite のテーブルに自動変換) 格納 R のテーブルオブジェクト (オブジェクト名は x) SQLite3 のテーブル (テーブル名は xx) library(dplyr) x <- data_frame( name=c("apple", "orange", "banana"), price=c(100, 50, 230) ) print(x) library(RSQLite) エラーメッセージが 出ないことを確認 conn = dbConnect( dbDriver("SQLite"), dbname="hoge.db") dbConnect(conn) dbWriteTable(conn, "xx", data.frame(x)) dbDisconnect(conn) 12
R のテーブルオブジェクトを、SQLite に格納 (そのとき、SQLite のテーブルに自動変換) • Rのテーブルオブジェクト ル = 格納 R のテーブルオブジェクト (オブジェクト名は x) SQLite のテーブ R のテーブルオブジェクト (テーブル名は xx) 13
わざとオブジェクト x を消してください あとで,SQLite から読み込みたいから 14
R のテーブルオブジェクトを、SQLite に格納 (そのとき、SQLite のテーブルに自動変換) R のテーブルオブジェクト (オブジェクト名は y) SQLite3 のテーブル (テーブル名は xx) library(RSQLite) conn = dbConnect( dbDriver("SQLite"), dbname="hoge.db") dbConnect(conn) y <- dbReadTable(conn, "xx") エラーメッセージが print(y) 出ないことを確認 dbDisconnect(conn) 15
SQL の例 SQLite3 のテーブル (テーブル名は xx) library(RSQLite) conn = dbConnect( dbDriver("SQLite"), dbname="hoge.db") dbConnect(conn) r1 <- dbGetQuery(conn, "select name from xx;") print(r1) dbDisconnect(conn) エラーメッセージが 出ないことを確認 16