投稿

ラベル(競馬)が付いた投稿を表示しています

競馬タイム換算計算テーブル

イメージ
1.概要 ●タイムの相互変換方法について 競馬データの中で走破タイムを比較したりする場合、秒に変換して 比較するのが一般的でありますが、走破タイムは、m.s.0という形式で 1/10秒までで表示されています。 この形式のままでは、直接、Excelでは秒に変換することが難しいです。 これをうまく計算させるには、m.s.0の形式で入力されているデータ をユーザー定義で、m:s:0としてセルの書式を書式変換して計算させます。 また、逆に秒から分への変換では、計算結果をユーザ定義で 選択して形式を m:s.0とすれば相互に変換することができます。 今回は、計算例としての「タイム換算計算テーブル(秒) →(分)への変換」を作成して見ました。 2.タイム換算計算テーブル 計算方法は、次のようにします。 <秒 → 分への変換> s : 変換元秒(sec) m : 変換後分(min) m = s/(24*60*60) ※セルの書式の表示形式で、ユーザ定義を選択して、形式を m:s.0 とする。 <分 → 秒への変換> m : 変換元分(min) s : 変換後秒(sec) s = INT(m*1440)+(m*1440-INT(m*1440))*0.6 3.ダウンロード 紹介したタイム換算計算テーブル(サンプル)は、必要であれば、下記よりダウンロードして自由に利用下さい。 ダウンロード

競馬成績表データベースを作る(ツール-HSP編)

イメージ
1.概要 競馬成績表データベースを作るの最終回です。第四弾で 競馬成績表データベースを作る(ツール-Excel編) では、 データベースをExcel VBAにて作成したプログラムで操作しましたが、今回の記事では、HSPスクリプト言語で同等の機能のものを作ります。 実行形式(exe)ファイルとしているので、扱いも簡単でExcel版よりも、やや高速に動作します。HSPに付属しているSQLite3のラッパーモジュールで SQLite3のデータベースを操作できます。 2.ソースコード まずは、raceseiseki.exeを起動します。使い方は、 Yahoo競馬レース成績表検索.xlsm と同様に検索条件の 「競馬場」、「距離」、「コース」のプルダウンをそれぞれクリックして条件を選択します。検索ボタンをクリックすれば、条件にヒットしたものを全件出力します。 出力ボタンをクリックするとカンマ区切りのテキスト形式で出力します。 ソースコードの大部分は画面作成部分であり、実際にデータベースを操作する部分は、154行目から184行目となります。 また、最大抽出件数は、SQL文でLIMIT=20000件と制限しています。ページ制御もしていないので、Excel版と比べて非常にコンパクトです。 実際、筆者は約25万件のデータベースを作成して利用しています。 ;***** (raceseiseki.hsp) ***** #include "sqlele.hsp" ;***** 実行ファイル自動作成 **** #packopt type 0 #packopt name "raceseiseki" #packopt runtime "hsprt" #packopt hide 1 #module #uselib "kernel32.dll" #cfunc CreateMutex "CreateMutexA" int,int,sptr #cfunc GetLastError "GetLastError" ;***** 二重起動防止 ***** #deffunc wexapend str prm1 strname=p

競馬成績表データベースを作る(ツール-Excel編)

イメージ
1.概要 競馬成績表データベースを作るの第四弾です。これまで、作成したデータベースを活用するためには、検索表示などができないと 何の役にも立ちません。今回は、Excel VBAで作成します。当ブログ記事の 「Excelでデータベース(SQLite3)を扱う」 で紹介しているテンプレートとなるソースコードを元にして、検索部分とデータ出力機能を追加しデータが抽出できるようにしたものです。 データベースをしっかり作成していれば、競馬以外の他の用途でも、いろいろと応用の効くものとすることができます。 2.ソースコード まずは、簡単に操作方法を説明します。 Yahoo競馬レース成績表検索.xlsm を起動します。 検索条件のコンボボックスで「競馬場」、「距離」、「コース」の3つの条件を選択して、実行ボタンをクリックします。 抽出対象データがあれば、100件/1ページ単位にデータが表示されます。ページ制御をしていますので、「次ページ」、 「前ページ」、「先頭」、「最終」のボタンをクリックしてページを表示させます。 また、「出力」ボタンをクリックすると、CSV形式で抽出したデータを外部出力できます。「消去」ボタンは、 画面上のデータを強制的に消去するものです。新たな条件で「実行」ボタンをクリックすれば、前処理として 消去(画面クリア)させていますので、通常は操作不要です。尚、 Yahoo競馬レース成績表検索.xlsm の実行には、 SQLite の ODBC とこのプログラムで利用する データベース(pegasus.db) が 必要 ですので事前に準備しておいて下さい。 ThisWorkbook は、ブックを開いた時の初期設定処理をしています。検索条件設定用のコンボボックスに値をセットします。 '***** ブックを開いた時の初期設定処理 ***** Private Sub Workbook_Open() Sheets("成績表").Select Worksheets("成績表").Activate '***** 検索条件用のコンボボックスを設定 ***** ' 競馬場 Dim CBRaceKaisai(10) CBRac

競馬成績表データベースを作る(データベース編)

イメージ
1.概要 「競馬成績表データベースを作る」の第三弾として、競馬成績表データの取得が完了していることを前提として、 記事を進めていきます。今回は、取得済みデータ(CSVファイル)からデータベースを作っていきます。 データベースは、SQLite3を利用しますので、当ブログ記事の 「Excelでデータベース(SQLite3)を扱う」 を一読願います。 データベースを作成するための必要なツールなどを紹介しています。これからの作業で必要となりますので、準備しておいて下さい。 2.作成手順 第二弾で説明したデータ取得編での作業が終了しているものとします。 (1)取得データの格納先パスを指定しなかったので、取得データは、カレントディレクトリにあると      思います。 (2)作業のために新規フォルダとして、「成績」と「日程」という2つのフォルダを作成します。 (3)RXXXXXXXXXXXXXX.txtは日程フォルダへ移動、SXXXXXXXXXXXXXX.csvは成績フォルダへ移動      させて下さい。 (4)DBへの入力元となるインポート用成績表ファイルをマージします。マージ処理は、当ブログの       「複数のファイルをマージする」 で公開の テキストファイルマージツール(tfmarge.exe) を使用      します。マージ対象先である成績フォルダを選択し、拡張子はcsvで出力ファイル名を成績      マージ.csvとしてマージボタンをクリックします。      成績フォルダ内に成績マージ.csvが作成されますので、カレントディレクトリに移動させます。 (5)成績マージ.csvファイルをメモ帳等のテキストエディタで開いて、先頭行にヘッダ名を挿入し      ます。予め別メモで書いているものをコピーして貼り付けると良いでしょう。 (6)import.batをダブルクリックして、成績マージ.csvファイルからデータベースを作成します。       ※【注意】import.batと同一フォルダにsqlite3.exeが必要です。      ・作成するDBファイル名 : pegasus.db      ・インポートCSVファイル名 : 成績マージ.csv (エンコード : UTF-8)      ・テー

競馬成績表データベースを作る(データ取得編)

イメージ
1.概要 競馬成績表データベースを作るの第二弾は、競馬成績表データの一括自動取得を行います。 事前準備編 で取得済みの 各レース毎のレース成績表リンクリストを使います。そのリストのリンクを順次読み込み、サイトを自動巡回して 成績表データを取得します。取得できるデータ項目は、日付、コード、R番号、競馬場、開催、発走時間、天気、馬場、レース名、コース、距離、単勝、枠連、馬連、馬単、3連単、1着、2着、3着、頭数の 計20項目となります。プログラムは、Excel VBAで作成します。 2.データの取得手順 成績表データ取得手順は、次の手順で行います。 (1) Yahoo競馬レース結果取得.xlsm を起動します。(ダウンロードは、本連載記事の最終回で提供) (2)成績表データ取得ボタンをクリックします。 (3)ファイル選択ダイアログが開くので、事前取得済みのレース成績表リンクリストを選択します。 (4)データ取得が開始されますので完了するまで待ちます。 (5)レース成績表リンクリストは分割して準備されていると思うので、続いて取得の場合は、      手順(2)から繰り返し実行します。 データベース作成時は、分割取得されたデータを全てマージして利用します。 コード体系は、以下のような体系で構成されています。データ取得時は、このコード番号が キーとしてURLのパラメータとなります。 (例)2002020806 https://keiba.yahoo.co.jp/race/result/2005020806/ 20 ⇒ 西暦年 YY 05 ⇒ 競馬場コード (東京) 02 ⇒ 開催回 (02回) 08 ⇒ 開催日目(08日目) 06 ⇒ レース番号 (06R) ●パラメータ yy : 開催年 xx : 競馬場コード yy : 開催回[第N回] zz : 開催日目[N日目] rr : レース番号 ●競馬場コード 01 : 札幌競馬場 02 : 函館競馬場 03 : 福島競馬場 04 : 新潟競馬場 05 : 東京競馬場 06 : 中山競馬場 07 : 中京競馬場 08 : 京都競馬場

競馬成績表データベースを作る(事前準備編)

イメージ
1.概要 競馬成績表のデータベースを作成し、過去の成績データから、いろいろ分析するのに役立てようと思います。 筆者は、実際に競馬はやっていません。競馬を題材としてデータ量が豊富なので統計的な分析手法の勉強用に データの収集を行って楽しんでいます。 今回の記事から何回かに分けての投稿を予定しています。データ収集からデータベースを作って活用するためのツール 作りまでを連載形式で紹介していきます。 2.事前準備作業 今後の予定については、以下の通りです。 ・ 事前準備編 (今回) ・データ取得編 ・データベース編 ・ツール-Excel編 ・ツール-HSP編 とします。一度に全ての記事を整理仕切れないので、分割としました。気長に付き合って下さい。 事前準備編では、競馬レースの成績表を過去分のデータまで遡って取得するために事前に指定年月の 開催日程日と各レースの結果が掲載されているページのURLを取得する必要があります。 取得プログラムは、Excel VBAマクロで作成しています。 3.利用方法 レース結果のリンクページのURLリストを取得するプログラムは、 Yahoo競馬結果リンク先取得.xlsm です。 指定範囲の年月で一括でリンクリストを取得し、外部出力します。 プログラムとしては、指定した年月より開催日程表リンク先を取得して配列(listファイル配列)に格納します。 listファイル配列のURLをもとに自動巡回しながら、開催日のレース毎の成績表リンク先を取得するというものです。 取得したリンク先をシート上に表示していきます。ファイル名を日付時刻形式として、カレントディレクトリにテキスト形式で外部出力します。 取得先は、下記サイトのページより取得しています。 Yahoo!競馬開催日程表 https://keiba.yahoo.co.jp/schedule/list / Yahoo!競馬成績表結果 https://keiba.yahoo.co.jp/race/result/ 利用方法は、ダウンロードしたら (1) Yahoo競馬結果リンク先取得.xlsm を起動します。 (2)プルダウンで開始年と開始月、終了年と終了月で取得期間(範囲)を指定します。       ※指定範囲は、最大6ヶ月程度として、

TOP