[[Rの備忘録]]
> install.packages ("xlsReadWrite")
> library (xlsReadWrite)
# インストール直後には以下を実行する必要があります
# xls.getshlib()
# Excel のシートからデータフレームを作成
> (x <- read.xls ("Book1.xls", sheet = "Book1") )
ID Name Sex Grade
1 1 あ 男 60
2 2 い 男 65
3 3 う 女 70
4 4 え 男 75
5 5 お 女 80
> # データフレームからエクセル・ファイルを作成
> write.xls (iris, file = "iris.xls")
>
> # データベース風にエクセル・ファイルにアクセス
> install.packages ("RODBC")
> library(RODBC)
> getwd()
[1] "C:/workhome"
> # エクセル・ファイルにアクセス
> con <- odbcConnectExcel("Book1.xls", readOnly= FALSE)
> # ファイルの概要を表示
> sqlTables (con)
TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE
1 C:\\workhome\\Book1 <NA> Book1$ SYSTEM TABLE
2 C:\\workhome\\Book1 <NA> Sheet2$ SYSTEM TABLE
3 C:\\workhome\\Book1 <NA> Sheet3$ SYSTEM TABLE
REMARKS
1 <NA>
2 <NA>
3 <NA>
> # データベースからデータフレームを作成
> (x <- sqlQuery (con, "select * from [Book1$]"))
ID Name Sex Grade
1 1 あ 男 60
2 2 い 男 65
3 3 う 女 70
4 4 え 男 75
5 5 お 女 80
> is.data.frame(x)
[1] TRUE
> # データベース風に抽出も可能
> sqlQuery (con, 'select Grade from [Book1$] where Grade > 70')
Grade
1 75
2 80
> sqlQuery (con, "update [Book1$] set Sex = 'F' where Sex = '女'")
character(0)
> # エクセル・ファイルとの接続を切る
> odbcClose (con)
>
> library(RSQLite)
要求されたパッケージ DBI をロード中です
>
> drv <- dbDriver( "SQLite")
> setwd("C:/sqlite")
> # データベースにアクセス
> con <- dbConnect(drv, dbname = "test.db")
> # テーブルを表示
> dbReadTable (con, "test")
id name sex
1 1 山田 M
2 2 佐藤 F
>
> # 「iris」データフレームをデータベースに登録
> dbWriteTable (con, value = iris, name = "iris" )
[1] TRUE
> # 登録されたデータを確認
> dbReadTable (con, "iris")
Sepal_Length Sepal_Width Petal_Length Petal_Width
1 5.1 3.5 1.4 0.2
2 4.9 3.0 1.4 0.2
3 4.7 3.2 1.3 0.2
… 中略
Species
1 setosa
2 setosa
3 setosa
… 以下略
> # 条件抽出してみる
> dbGetQuery (con, "select * from iris where Petal_Width > 2")
row_names Sepal_Length Sepal_Width Petal_Length
1 101 6.3 3.3 6.0
2 103 7.1 3.0 5.9
3 105 6.5 3.0 5.8
… 中略
Petal_Width Species
1 2.5 virginica
2 2.1 virginica
3 2.2 virginica
… 以下略
> # 「Petal_Width」フィールドの平均を求める
> dbGetQuery (con, "select avg (Petal_Width) from iris")
avg (Petal_Width)
1 1.199333
> # データベースとの接続を切る
> dbDisconnect (con)
[1] TRUE