ここでは,テスト用の CSV ファイル Book1.csv をダウンロードし, ディレクトリ C:\R\の下におくことにします.
※ Ubuntu の場合は /tmp の下などに置く(要するにどこでも良い)
この Web ページのプログラムでは,1行目がヘッダー.2行目以降がデータ本体になっている必要がある. CSV ファイルの1行目に,各列の属性名が書かれていることを確認する.
テスト用の CSV ファイル Book1.csv では, 属性名として seq, date, USD, EUR, AUD の5つが 書かれている.
まだ rsruby は使っていません.このプログラムを書き換えて,いろいろなグラフ作成に使うことします.
require 'rubygems' require "csv" reader = CSV.open("/tmp/Book1.csv", "r") header = reader.take(1)[0] T = Hash::new header.each do |attr| T[attr.strip] = [] end reader.each do |row| i = 0 row.each do |item| T[header[i].strip].push(item.strip) i = i + 1 end end
最小値,中央値,平均値,最大値などを取得
◆ Ubuntu の場合の実行手順例
export R_HOME=/usr/lib/Rirb require 'rubygems' require "csv" require 'rsruby' reader = CSV.open("/tmp/Book1.csv", "r") header = reader.take(1)[0] T = Hash::new header.each do |attr| T[attr.strip] = [] end reader.each do |row| i = 0 row.each do |item| T[header[i].strip].push(item.strip) i = i + 1 end end # r = RSRuby::instance r.eval_R(<<-RCOMMAND) # create a data frame D seq <- c( #{T["seq"].join(",")} ) date <- c( #{T["date"].join(",")} ) USD <- c( #{T["USD"].join(",")} ) EUR <- c( #{T["EUR"].join(",")} ) AUD <- c( #{T["AUD"].join(",")} ) D = data.frame( cbind( seq = seq, date = date, USD = USD, EUR = EUR, AUD = AUD ) ) a = summary(D) RCOMMAND r.a
平均値,標準偏差などを取得
◆ Ubuntu の場合の実行手順例
export R_HOME=/usr/lib/Rirb require 'rubygems' require "csv" require 'rsruby' reader = CSV.open("/tmp/Book1.csv", "r") header = reader.take(1)[0] T = Hash::new header.each do |attr| T[attr.strip] = [] end reader.each do |row| i = 0 row.each do |item| T[header[i].strip].push(item.strip) i = i + 1 end end # r = RSRuby::instance r.eval_R(<<-RCOMMAND) library(Rcmdr) # create a data frame D seq <- c( #{T["seq"].join(",")} ) date <- c( #{T["date"].join(",")} ) USD <- c( #{T["USD"].join(",")} ) EUR <- c( #{T["EUR"].join(",")} ) AUD <- c( #{T["AUD"].join(",")} ) D = data.frame( cbind( seq = seq, date = date, USD = USD, EUR = EUR, AUD = AUD ) ) a = numSummary( D[,c("USD", "EUR", "AUD")], statistics=c("mean", "sd", "quantiles"), quantiles=c( 0,.25,.5,.75,1 )) RCOMMAND r.a
要点: 横軸が seq, 縦軸が USD
◆ Ubuntu の場合の実行手順例
export R_HOME=/usr/lib/Rirb require 'rubygems' require "csv" require 'rsruby' reader = CSV.open("/tmp/Book1.csv", "r") header = reader.take(1)[0] T = Hash::new header.each do |attr| T[attr.strip] = [] end reader.each do |row| i = 0 row.each do |item| T[header[i].strip].push(item.strip) i = i + 1 end end # r = RSRuby::instance r.eval_R(<<-RCOMMAND) # create a data frame D seq <- c( #{T["seq"].join(",")} ) date <- c( #{T["date"].join(",")} ) USD <- c( #{T["USD"].join(",")} ) EUR <- c( #{T["EUR"].join(",")} ) AUD <- c( #{T["AUD"].join(",")} ) D = data.frame( cbind( seq = seq, date = date, USD = USD, EUR = EUR, AUD = AUD ) ) scatterplot( USD~seq, reg.line=lm, smooth=TRUE, boxplots=FALSE, span=0.5, data=D ) RCOMMAND
要点: 横軸が seq, 縦軸が USD.分布の平均と分散も図示
◆ Ubuntu の場合の実行手順例
export R_HOME=/usr/lib/Rirb require 'rubygems' require "csv" require 'rsruby' reader = CSV.open("/tmp/Book1.csv", "r") header = reader.take(1)[0] T = Hash::new header.each do |attr| T[attr.strip] = [] end reader.each do |row| i = 0 row.each do |item| T[header[i].strip].push(item.strip) i = i + 1 end end # r = RSRuby::instance r.eval_R(<<-RCOMMAND) # create a data frame D seq <- c( #{T["seq"].join(",")} ) date <- c( #{T["date"].join(",")} ) USD <- c( #{T["USD"].join(",")} ) EUR <- c( #{T["EUR"].join(",")} ) AUD <- c( #{T["AUD"].join(",")} ) D = data.frame( cbind( seq = seq, date = date, USD = USD, EUR = EUR, AUD = AUD ) ) scatterplot( USD~seq, reg.line=lm, smooth=TRUE, boxplots='xy', span=0.5, data=D ) RCOMMAND
◆ Ubuntu の場合の実行手順例
export R_HOME=/usr/lib/Rirb require 'rubygems' require "csv" require 'rsruby' reader = CSV.open("/tmp/Book1.csv", "r") header = reader.take(1)[0] T = Hash::new header.each do |attr| T[attr.strip] = [] end reader.each do |row| i = 0 row.each do |item| T[header[i].strip].push(item.strip) i = i + 1 end end # r = RSRuby::instance r.eval_R(<<-RCOMMAND) # create a data frame D seq <- c( #{T["seq"].join(",")} ) date <- c( #{T["date"].join(",")} ) USD <- c( #{T["USD"].join(",")} ) EUR <- c( #{T["EUR"].join(",")} ) AUD <- c( #{T["AUD"].join(",")} ) D = data.frame( cbind( seq = seq, date = date, USD = USD, EUR = EUR, AUD = AUD ) ) scatterplot.matrix( ~seq+USD+EUR+AUD, reg.line=lm, smooth=TRUE, diagonal='density', span=0.5, data=D ) RCOMMAND
export R_HOME=/usr/lib/Rirb require 'rubygems' require "csv" require 'rsruby' reader = CSV.open("/tmp/Book1.csv", "r") header = reader.take(1)[0] T = Hash::new header.each do |attr| T[attr.strip] = [] end reader.each do |row| i = 0 row.each do |item| T[header[i].strip].push(item.strip) i = i + 1 end end # r = RSRuby::instance r.eval_R(<<-RCOMMAND) # create a data frame D seq <- c( #{T["seq"].join(",")} ) date <- c( #{T["date"].join(",")} ) USD <- c( #{T["USD"].join(",")} ) EUR <- c( #{T["EUR"].join(",")} ) AUD <- c( #{T["AUD"].join(",")} ) D = data.frame( cbind( seq = seq, date = date, USD = USD, EUR = EUR, AUD = AUD ) ) reliability( cov(D[,c("USD","EUR","AUD")], use="complete.obs") ) RCOMMAND