R システムのパッケージに付属のデータセットから SQLite 3 データベースを生成(R システム,SQLite3 を使用)

概要

このページでは,R システムの各パッケージに付属するデータセットを取り出し,そのデータから SQLite 3 データベース rdataset を生成する手順を示す.各データセットごとに,テーブル定義(CREATE TABLE)と,R でデータを CSV に書き出して SQLite 3 に読み込む手順を説明する.一部のデータセットについては,生成したデータベースを読み出してグラフを描く R プログラム例も示す.

次のデータから SQLite 3 データベースを生成する.

作成する SQLite 3 データベース: rdataset

目次

関連する外部ページ

サイト内の関連情報

第1章 前準備

使用するソフトウェア

あらかじめ決めておく事項

このページでは,SQLite 3 データベースの生成を行う. 生成するSQLite 3 データベースのデータベース名を決めておくこと. このページでは,次のように書く.

第2章 一般のデータ

iris

iris は R の datasets パッケージに付属するアヤメの測定データである.R での列名は Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species(ドット区切り)であるが,ここでは SQLite 3 のテーブル列名としてアンダースコア区切りの名前を用いる(読み込み時は CSV の見出し行を除いてデータ部分だけを取り込むため,列名の対応に問題はない).

  1. テーブル定義
    • iris(Sepal_Length, Sepal_Width, Petal_Length, Petal_Width, Species)

    Python プログラム(テーブルの作成)

    #!/usr/bin/python
    
    import sqlite3
    conn = sqlite3.connect('rdataset')
    
    sql = u"""
    drop table iris;
    """
    conn.execute(sql)
    
    sql = u"""
    create table iris (
      Sepal_Length  real,
      Sepal_Width   real,
      Petal_Length  real,
      Petal_Width   real,
      Species       text
    );
    """
    conn.execute(sql)
    
    conn.close()
    
  2. テーブルへのデータの読み込み

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      write.csv(iris, file="/tmp/iris.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv iris
    vacuum;
    SQL
    #
    tail -n +2 /tmp/iris.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from iris limit 10;' | sqlite3 /tmp/rdataset
    

diamonds

diamonds は ggplot2 パッケージに付属するダイヤモンドのデータである.列 table(テーブル面の比率)は SQL の予約語と紛らわしいため,SQLite 3 のテーブルでは列名を tbl とする.

  1. テーブル定義
    • diamonds(carat, cut, color, clarity, depth, table, price, x, y, z)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table diamonds;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table diamonds (
      carat   real,
      cut     text,
      color   text,
      clarity text,
      depth   real,
      tbl     real,
      price   integer,
      x       real,
      y       real,
      z       real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      write.csv(diamonds, file="/tmp/diamonds.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv diamonds
    vacuum;
    SQL
    #
    tail -n +2 /tmp/diamonds.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from diamonds limit 10;' | sqlite3 /tmp/rdataset
    

Indometh

Indometh は R の datasets パッケージに付属する,インドメタシンの薬物動態データである.列は Subject(被験者),time(採取時刻),conc(血漿中濃度)である.ここでは時刻の列名を t とする.

  1. テーブル定義
    • Indometh(Subject, t, conc)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table Indometh;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table Indometh (
      Subject  integer,
      t        real,
      conc     real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      write.csv(Indometh, file="/tmp/Indometh.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv Indometh
    vacuum;
    SQL
    #
    tail -n +2 /tmp/Indometh.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from Indometh limit 10;' | sqlite3 /tmp/rdataset
    

第3章 時系列 (time series)

wind

ここでの wind は gstat パッケージに付属するアイルランドの風速データ(1961〜1978 年)である.year は 1900 を引いた値で格納されているため,R 側で year + 1900 として日付を組み立てる.

  1. テーブル定義
    • wind(year, month, day, RPT, VAL, ROS, KIL, SHA, BIR, DUB, CLA, MUL, CLO, BEL, MAL)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table wind;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table wind (
      at     date,
      year   integer,
      month  integer,
      day    integer,
      RPT    real,
      VAL    real,
      ROS    real,
      KIL    real,
      SHA    real,
      BIR    real,
      DUB    real,
      CLA    real,
      MUL    real,
      CLO    real,
      BEL    real,
      MAL    real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      library(insol)
      library(gstat)
      data(wind)
      wind\$at = as.Date( ISOdate(wind\$year + 1900, wind\$month, wind\$day) )
      # 列順序の入れ替え
      wind <- wind[,c(16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)]
      str(wind)
      write.csv(wind, file="/tmp/wind.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv wind
    vacuum;
    SQL
    #
    tail -n +2 /tmp/wind.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from wind limit 10;' | sqlite3 /tmp/rdataset
    

◆ ggplot() を使用 (R プログラム)

  library(ggplot2)
  library(RSQLite)
  library(xts)
  library(chron)

  fetch_table <- function(sqlite3dbname, tablename) {
    drv <- dbDriver("SQLite", max.con = 1)
    conn <- dbConnect(drv, dbname=sqlite3dbname)
    rs <- dbSendQuery( conn, paste("SELECT * from", tablename, ";") )
    T <- fetch(rs, n = -1)
    return(T)
  }

  T <- fetch_table("/tmp/rdataset", "wind")

#
  table_to_melt <- function(T, tsvec, tsformat) {
    # 先に xts 型に変換しておく
    D <- as.xts( read.zoo( T, tsformat ) )
    # melt(Date, AttrNum, Value).
    Date <- rep(strptime(tsvec, tsformat, tz=""), ncol(D))
    AttrNum <- rep(1:ncol(D), each=nrow(D))
    Value <- as.numeric(as.vector(D))
    return( data.frame(Date=Date, AttrNum=AttrNum, Value=Value) )
  }

  M <- table_to_melt(T, T$at, "%Y-%m-%d")
#
#  ggplot(M, aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);
  ggplot(subset(M, AttrNum==10), aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);

◆ 追加プログラム (R プログラム) (書きかけ)

http://www.inside-r.org/packages/cran/gstat/docs/wind

#  1月1日を基点とする日数(月日の情報を使う.年は無視)
j <- as.numeric(format(as.Date(T$at), '%j') )

winsqrt = sqrt( 0.5148 * ( as.matrix(T[5:16]) ) )
plot(winsqrt)
winsqrt = winsqrt - mean(winsqrt)
a <- sapply( split(winsqrt, j), mean )

plot(a)
lines( lowess(a, f=0.1) )

meteoandes

meteoandes は insol パッケージに付属する山岳気象データである(insol パッケージは現在 CRAN の通常配布から外れており,CRAN の archive から入手する).year(年),doy(年初からの通算日),hh(時),mm(分)から日時を組み立てる.

  1. テーブル定義
    • meteoandes(year, doy, hh, mm, Tair, pyra1, pyra2, windspeed, winddir, RH)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table meteoandes;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table meteoandes (
      meteodate datetime,
      year      integer,
      doy       integer,
      hh        integer,
      mm        integer,
      Tair      real,
      pyra1     real,
      pyra2     real,
      windspeed real,
      winddir   real,
      RH        real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      library(insol)
      data(meteoandes)
      meteoandes\$meteodate = strptime(paste(meteoandes\$year,meteoandes\$doy,meteoandes\$hh,meteoandes\$mm),format="%Y %j %H %M",tz="America/Santiago")
      # 列順序の入れ替え
      meteoandes <- meteoandes[,c(11,1,2,3,4,5,6,7,8,9,10)]
      str(meteoandes)
      write.csv(meteoandes, file="/tmp/meteoandes.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv meteoandes
    vacuum;
    SQL
    #
    tail -n +2 /tmp/meteoandes.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from meteoandes limit 10;' | sqlite3 /tmp/rdataset
    
  3. R のプログラム例を用いてプロット

    ◆ ggplot() を使用 (R プログラム) (書きかけ)(動作未確認)

      library(ggplot2)
      library(RSQLite)
      library(xts)
      library(chron)
    
      fetch_table <- function(sqlite3dbname, tablename) {
        drv <- dbDriver("SQLite", max.con = 1)
        conn <- dbConnect(drv, dbname=sqlite3dbname)
        rs <- dbSendQuery( conn, paste("SELECT * from", tablename, ";") )
        T <- fetch(rs, n = -1)
        return(T)
      }
    
      T <- fetch_table("/tmp/rdataset", "meteoandes")
    
    #
      table_to_melt <- function(T, tsvec, tsformat) {
        # 先に xts 型に変換しておく
        D <- as.xts( read.zoo( T, tsformat ) )
        # melt(Date, AttrNum, Value).
        Date <- rep(strptime(tsvec, tsformat, tz=""), ncol(D))
        AttrNum <- rep(1:ncol(D), each=nrow(D))
        Value <- as.numeric(as.vector(D))
        return( data.frame(Date=Date, AttrNum=AttrNum, Value=Value) )
      }
    
      M <- table_to_melt(T, T$meteodate, "%Y-%m-%d %H:%M:%S")
    #
      ggplot(M, aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);
    #
      ggplot(subset(M, AttrNum==3), aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);
    

    ◆ plot() を使用 (R プログラム)

      library(RSQLite)
      library(xts)
      library(chron)
      drv <- dbDriver("SQLite", max.con = 1)
      conn <- dbConnect(drv, dbname="/tmp/rdataset")
      rs <- dbSendQuery( conn, "SELECT * from meteoandes;" )
      T <- fetch(rs, n = -1)
    # plot pyra1, pyra2
      plot(strptime(T$meteodate, "%Y-%m-%d %H:%M:%S", tz=""), T$pyra1, 'l', col=2, xlab='Date', xaxt="n",
      ylab=expression(paste('Solar radiation [ ',Wm^-2,' ]')), main='Insolation at Loma Larga glacier')
      r <- as.POSIXct(round(range(strptime(T$meteodate, "%Y-%m-%d %H:%M:%S", tz="")), "days"))
      lines(strptime(T$meteodate, "%Y-%m-%d %H:%M:%S", tz=""), T$pyra2, col=4)
      axis.POSIXct(1, at=seq(r[1],r[2], by="1 week"), format="%d日 0時")
    

economics

economics は ggplot2 パッケージに付属する米国の経済時系列データである.date(月),pce(個人消費支出),pop(総人口),psavert(個人貯蓄率),uempmed(失業期間の中央値),unemploy(失業者数)の列を持つ.ここでは日付の列名を dt とする.

  1. テーブル定義
    • economics(dt, pce, pop, psavert, uempmed, unemploy)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table economics;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table economics (
      dt       datetime,
      pce      real,
      pop      integer,
      psavert  real,
      uempmed  real,
      unemploy integer
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      write.csv(economics, file="/tmp/economics.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv economics
    vacuum;
    SQL
    #
    tail -n +2 /tmp/economics.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from economics limit 10;' | sqlite3 /tmp/rdataset
    
  3. R のプログラム例を用いてプロット

    ◆ ggplot() を使用 (R プログラム)

      library(ggplot2)
      library(RSQLite)
      library(xts)
      library(chron)
    
      fetch_table <- function(sqlite3dbname, tablename) {
        drv <- dbDriver("SQLite", max.con = 1)
        conn <- dbConnect(drv, dbname=sqlite3dbname)
        rs <- dbSendQuery( conn, paste("SELECT * from", tablename, ";") )
        T <- fetch(rs, n = -1)
        return(T)
      }
    
      T <- fetch_table("/tmp/rdataset", "economics")
    
    #
      table_to_melt <- function(T, tsvec, tsformat) {
        # 先に xts 型に変換しておく
        D <- as.xts( read.zoo( T, tsformat ) )
        # melt(Date, AttrNum, Value).
        Date <- rep(strptime(tsvec, tsformat, tz=""), ncol(D))
        AttrNum <- rep(1:ncol(D), each=nrow(D))
        Value <- as.numeric(as.vector(D))
        return( data.frame(Date=Date, AttrNum=AttrNum, Value=Value) )
      }
    
      M <- table_to_melt(T, T$dt, "%Y-%m-%d")
    #
      ggplot(M, aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);
    #
      ggplot(subset(M, AttrNum==3), aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);
    

nhtemp

nhtemp は R の datasets パッケージに付属する,米国コネチカット州ニューヘイブンの年平均気温(華氏,1912〜1971 年)の時系列データである.時系列を xts 型に変換し,行名(年)とともに CSV へ書き出す.

  1. テーブル定義
    • nhtemp(ts, temperature)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table nhtemp;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table nhtemp (
      ts            datetime,
      temperature   real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      data(nhtemp)
      D <- as.xts(nhtemp)
    #
      write.csv(as.data.frame(D), file="/tmp/nhtemp.csv", row.names=TRUE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv nhtemp
    vacuum;
    SQL
    #
    tail -n +2 /tmp/nhtemp.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from nhtemp limit 10;' | sqlite3 /tmp/rdataset
    
  3. R のプログラム例を用いてプロット

    ◆ ggplot() を使用 (R プログラム)

      library(ggplot2)
      library(RSQLite)
      library(xts)
      library(chron)
    
      fetch_table <- function(sqlite3dbname, tablename) {
        drv <- dbDriver("SQLite", max.con = 1)
        conn <- dbConnect(drv, dbname=sqlite3dbname)
        rs <- dbSendQuery( conn, paste("SELECT * from", tablename, ";") )
        T <- fetch(rs, n = -1)
        return(T)
      }
    
      T <- fetch_table("/tmp/rdataset", "nhtemp")
    
    #
      table_to_melt <- function(T, tsvec, tsformat) {
        # 先に xts 型に変換しておく
        D <- as.xts( read.zoo( T, tsformat ) )
        # melt(Date, AttrNum, Value).
        Date <- rep(strptime(tsvec, tsformat, tz=""), ncol(D))
        AttrNum <- rep(1:ncol(D), each=nrow(D))
        Value <- as.numeric(as.vector(D))
        return( data.frame(Date=Date, AttrNum=AttrNum, Value=Value) )
      }
    
      M <- table_to_melt(T, T$ts, "\"%Y-%m-%d\"")
    
    #
      ggplot(M, aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=2);
    

第4章 配列

Lai2005fig4

Lai2005fig4 は changepoint パッケージに付属する配列データ(染色体 7 番の GBM29 サンプル)である.

データ源: https://compbio.med.harvard.edu/Supplements/Bioinformatics05b/Profiles/Chrom_7_from40_to65Mb_GBM29.xls

  1. テーブル定義
    • Lai2005fig4(Spot, CH, POS_start, POS_end, GBM29)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table Lai2005fig4;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table Lai2005fig4 (
      Spot      integer,
      CH        integer,
      POS_start integer,
      POS_end   integer,
      GBM29     real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      library(changepoint)
      data(Lai2005fig4)
      write.csv(Lai2005fig4, file="/tmp/Lai2005fig4.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv Lai2005fig4
    vacuum;
    SQL
    #
    tail -n +2 /tmp/Lai2005fig4.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from Lai2005fig4 limit 10;' | sqlite3 /tmp/rdataset
    

第5章 緯度・経度

wind.loc

ここでの wind.loc は gstat パッケージに付属する観測点の位置データである.Latitude, Longitude は度分秒(DMS)の文字列で格納されているため,sp パッケージの char2dms()(DMS 形式の文字列を緯度・経度の数値へ変換する関数)で十進数の緯度・経度に変換する.

  1. テーブル定義
    • wind_loc(lat, lon, Station, Code, Latitude, Longitude, MeanWind)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table wind_loc;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table wind_loc (
      Station   text,
      Code      text,
      Latitude  text,
      Longitude text,
      MeanWind  real,
      lat       real,
      lon       real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      library(insol)
      library(gstat)
      library(sp)
      data(wind)
      wind.loc\$y = as.numeric(char2dms(as.character(wind.loc[['Latitude']])))
      wind.loc\$x = as.numeric(char2dms(as.character(wind.loc[['Longitude']])))
      coordinates(wind.loc) = ~x+y
      write.csv(wind.loc, file="/tmp/wind.loc.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv wind_loc
    vacuum;
    SQL
    #
    tail -n +2 /tmp/wind.loc.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from wind_loc limit 10;' | sqlite3 /tmp/rdataset
    

seals

seals は ggplot2 パッケージに付属する,アザラシの移動を表すベクトル場データである.lat, long(観測点の緯度・経度)と delta_long, delta_lat(移動量)の 4 列を持つ.

  1. テーブル定義
    • seals(lat, long, delta_long, delta_lat)

    bash プログラム

    #!/bin/bash
    
    # rm -f /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table seals;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table seals (
      lat        real,
      long       real,
      delta_long real,
      delta_lat  real
    );
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.r <<-RCOMMAND
      library(stats)
      library(graphics)
      library(datasets)
      library(ggplot2)
      library(xts)
      library(chron)
      write.csv(seals, file="/tmp/seals.csv", row.names=FALSE)
    RCOMMAND
    #
    cat /tmp/a.$$.r | R --no-save
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv seals
    vacuum;
    SQL
    #
    tail -n +2 /tmp/seals.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset
    #
    echo 'select * from seals limit 10;' | sqlite3 /tmp/rdataset