rptパッケージのサンプル・スクリプトに関するメモ書き
rptパッケージにおけるサンプル・スクリプトの簡単なメモ書きを掲げます。
サンプルは、いずれもrubyスクリプトです。
《目次》
1. Excel関連
(1) 基本編
◇ 実行の条件: Excel がインストールされている必要がある
○ basic01.rb.txt
- 文字の色・大きさ・書体・下線・太さ・斜体の設定
- ハイパーリンクの設定、罫線の書き入れ
- セルへの関数の書込み(平方根・平均値)
- セルの表示形式の設定(001, 日付, 分数, 小数点数)
○ basic02.rb.txt
- 行の挿入・列の削除・ワークシートのコピー作成・並べ替え
- 行の折り返し・セル内での中寄せ
- グラフの作成、そのグラフをpngファイルとして出力
(2) PivotTable
◇ 実行の条件: Excel がインストールされている必要がある。
Accessデータベースはインストールされていなくても実行可能。
○ pivot01.rb.txt
- 「ID, 性別, 職業, 身長, 体重」の100人分のデータを素材にして
- クロス集計:男女別・職業別の人数、および構成比(%)
- 数値の集計:男女別に身長と体重の平均値を算出
- 男女別・身長区分別の人数(数値のグループ化)、身長を逆順にした表も作る
○ pivot02.rb.txt
- data02.xlsには各支店(東京, 名古屋, 大阪)の「日付,売上げ」が365日分記録。支店ごとにワークシートが異なる。つまり3つのワークシートがある。
- 第1シートに、四半期単位の支店別売上げ合計の集計表を作成
- 第2シートに、月単位の支店別売上げ合計の集計表を作成
○ pivot03.rb.txt
- 「都道府県, 人口」のデータ(人口の多い順)を素材にして
- 地方ブロック別の人口の合計を算出。都道府県名を非表示にする表と、表示する表の2種類を別々のシートに作成
○ pivot04.rb.txt
- Accessデータベースを素材にして集計
- ワークブック内のピボットテーブル存在確認とその削除を行う
- まず pivot01.rb.txt と同じ集計表を z_pivot04.xls に作る
- そして z_pivot04.xls を改めて開き
- それに含まれているピボットテーブルの一覧を表示
- 構成比(%)の表を削除し、z_pivot04.xls を保存
(3) QueryTableなど外部データの取り込み
◇ 実行の条件: Excelがインストールされている必要がある。
Accessデータベースはインストールされていなくてもかまわない。
QueryTable03.rb.txtの実行にはインターネット接続環境が必要。
○ QueryTable01.rb.txt
- Accessデータベースを読み込む。「ID,氏名,身長,誕生日」からなるデータ
- データベースのsql実行結果をワークシートに読み込んで保存
- 第1シートには素直な読込み結果、第2シートには身長順の読込み結果を記録
○ QueryTable02.rb.txt
- AccessデータベースをまるごとExcelファイルに変換(data01.mdb → data01.xls)
- data01.xlsを外部データとしてクエリテーブルで読み込む(z_query02.xlsの生成)
- クエリテーブルを保存し、後で再利用する
- data01.xlsに2人分のデータを追加。それがz_query02.xlsに反映されるのを確認
○ QueryTable03.rb.txt
- webのtableを取り込んで z_query03.xls を生成。気象情報のWeb。
(4) DataTable
◇ 実行の条件: Excel がインストールされている必要がある
○ DataTable01.rb.txt
- BMI = 体重(キログラム) ÷ 身長(メートル) ÷ 身長(メートル)
- 体重50〜80Kg(5Kg刻み)、身長150〜180Cm(5Cm刻み)のBMIを算出
○ DataTable02.rb.txt
- 3千万円を借りた場合、返済年数 10〜35年(5年刻み)、年利 1%〜3.5%(0.5%刻み)の返済月額を算出
- Excelの関数 PMT(金利,返済期間,返済総額) で単位あたり返済額を得る
- 年利2%, 返済年数30年, 返済総額3千万の返済月額を得るには、PMT(0.02/12, 30*12, 30000000) とする。
(5) Scenario
◇ 実行の条件: Excel がインストールされている必要がある
○ scenario01.rb.txt
- 3つの事業(飲食店事業, 通信販売事業, 塾経営事業)の簡易な予算書を作成
- 予算書は基本的に収入と支出の2つだけ。その差額(利益)は関数で求める。
- 3つの事業ごとにシナリオを登録
- 第1シートでは、第1のシナリオ(飲食店事業のシナリオ)を表示
- 第2シートは、3つの事業の要約レポート(標準タイプ)
- 第3シートは、3つの事業の要約レポート(PivotTableタイプ)
- ダミーのシートを設けて、シナリオを含めコピーする方法も含まれている
- __END__ 以降に、関連プロパティの説明あり
○ scenario02.rb.txt
- 本業と副業の2種類のシナリオを登録
- 本業:飲食店, 通信販売, 塾経営。副業: 副業A, 副業B, 副業C
- 各々の事業は「事業,収入,支出,利益(自動的に算出)」の4項目から構成される
- 本業と副業から、その合算を自動的に算出する
- 飲食店事業と副業Aの組合せを表示
○ scenario03.rb.txt
- 本業と副業の2種類のシナリオを登録(scenario02.rb.txtと同じ)
- 本業と副業の総ての組合せを表示。各組合せをワークシートを替えて表示
(6) GoalSeek
◇ 実行の条件: Excel がインストールされている必要がある
○ GoalSeek01.rb.txt
- 27の3乗根を求める
- 数値の表示形式(小数点以下桁数の指定)をしない時と、した時の2種類を示す
○ GoalSeek02.rb.txt
- 第1シート: 正六面体(サイコロ)の辺の長さ・体積・表面積を算出
- 目標値を100, 200, 300, …… 1000(立方メートル)として、その退席の箱の大きさを調べる。辺の長さは退席の3乗根
- 第2シート: 第2シートと同じだが、ゴールシークの精度を上げて試す。
- 精度を上げるため、「最大反復回数」と「変化の最大値」を変更
○ GoalSeek03.rb.txt
- 「PMT(利率, 返済月数, 返済総額)=返済月額」で《返済総額》を逆算
- 返済期間(36ヶ月)は固定。年利1%〜10%、返済月額5万円〜10万円のとき
- 借用可能限度額(総額)がいくらになるかをみる
(7) ソルバー、ワードとの連携
◇ 実行の条件: Excel, Word がインストールされている必要がある。
○ solver_test.rb.txt
- 放物線の分析: ボールをなるべく遠くまで投げるための角度、最高位置を求める
- ExcelのSolverを利用。
○ Word_to_Excel.rb.txt
- ワード文書の表をすべてExcelに書き出す。クリップボードを利用
- カレントフォルダの *.doc, *.docx, *.docm などを対象に処理する
- word_test.doc の表は word_test.doc.xls に書き出される
◇ 目次に戻る
2. Word関連
(1) 基本的操作
◇ 実行の条件: Word がインストールされている必要がある。
○ word01.rb.txt
- 新規文書に、素直に1行づつ文字を書き込んでいく
- 中央揃え、右揃えを行う
- 箇条書きを行う
- ページ番号を付加(フッターに中央揃えの形)
○ word02.rb.txt
- ワード文書にテキストファイルを挿入し、フッターに中央揃えのページ番号を付けル
- data02.txt を取り込んで、z_word02.doc を出力
- ここで使っている InsertFile() は、テキストファイルだけでなく、他のワード文書などの取り込みにも利用できる
○ word03.rb.txt
- data03.doc(業務日誌の雛形)の中の [氏名], [日付] などを置換する
- 何をどう置換するかの情報は data03.txt(タブ区切りテキスト)から読み取る
- どのような置換が行われたかは、X_OUT.TXT に書き出される
○ word04.rb.txt
- 2段組の文書を作成
- 文字の書体、大きさ、太字の指定を行う
- 箇条書きを行う
(2) MarkDownの変換とWordでの調整
◇ 実行の条件: Word がインストールされている必要がある。
○ word05.rb.txt
- markdown記法の文書 data05.md.txt をワード文書 z_word05.docx に変換する。
- また、実際にワードを起動して、用紙の横幅や縦の長さなどを調整する。
- 文書中の「都道府県の人口等」を中央揃えにするといった調整も行う。
- それら調整の情報は data05.inf.txt から読み込む。
- 表の罫線を細い実線に変更する
- markdownについて: 行頭に ‘#’ があると見出しとなる。
- 行頭に ‘-‘ があると箇条書き
- ’|’ がある行は、表として書き出される
- 段落と段落の間には、必ず空白行を置く。空白行がないと、改行が無視されて、つながった1行になってしまうので注意。
- markdownのルールの詳細は、いろんな web に載っているので参照されたい。
○ word06.rb.txt
- 数式とグラフ(画像)をワード文書に盛り込む。
- 画像ファイル(data06_graph.png)を取り込んで z_word06.docx を生成。
○ word07.rb.txt
- 2段組の文書を生成
- markdownの原稿 data07.md.txt から z_word07.docx を作る。
- data07.inf.txtの情報に従って、A4横長、2段組の文書にする。
◇ 目次に戻る
3. Access関連
(1) その1
◇ 実行の条件: Office2003以降がインストールされている必要がある。
Accessデータベースがインストールされていなくてもよい。
○ access01.rb.txt
- データベースの作成。「ID, 氏名, 身長, 誕生日」からなるテーブルを作成
- sql命令:insertによるレコードの挿入
- 最後に、mdbファイルの中身をExcelファイルとして書き出す
- z_access01.mdb を z_access01.accdb に変更して実行可能。その場合、Office2007以降がインストールされている必要がある
○ access02.rb.txt
- CSVファイルを読み込んで、データベースにレコード挿入
- sql命令でなく addnewにより挿入
○ access03.rb.txt
- オートインクリメント機能を利用する例
- 「ID, 氏名, 身長, 誕生日, 資格あり」のIDを入力しなくても自動的に入る
○ access04.rb.txt
- レコードの更新(sql命令:updateによる方法)
○ access05.rb.txt
- レコードの削除:身長170.0未満を削除(sql命令:deleteによる方法)
○ access06.rb.txt
- まずデータベースを作成(ID, 氏名, 身長, 誕生日からなるテーブル)
- 2つのsql命令を実行し、各々の結果をExcelファイルに書き出す
- 「select …… order by asc | desc」の例。asc:昇順、desc:降順
(2) その2
◇ 実行の条件: Office2003以降がインストールされている必要がある。
Accessデータベースがインストールされていなくてもよい。
○ access07.rb.txt
- whereのいろいろな条件指定の例を示す
- まず「ID,氏名,身長,誕生日,資格あり」からなるデータベースを作成
- それに様々なsql命令を実行し、その結果をテキストファイルに書き出す
- 表は ‘+’, ‘-‘, ‘|’ を罫線にして出力
○ access08.rb.txt
- 仮装テーブルのVIEWを使う例
- まず「ID,氏名,身長,誕生日,資格あり」からなるデータベースを作成
- 仮想テーブルに関するsql命令を実行し、その結果をhtmlに書き出す
- markdownを生成し、それをhtmlに変換する。
○ access09.rb.txt
- テーブルの結合
- まず「ID,氏名」と「ID,月あたり小遣い」からなる2つのテーブルを作成
- whereを用いた結合、inner join …… onを用いた結合の2種類を実行
- 結果のレポートは、ワード文書(docx)として書き出す。
○ access10.rb.txt
- データ型とオプション指定の例
- 「ID,氏名,今期出勤比率,所属部署,今期売上げ,自社株所有組合番号」のテーブルを作成。
- その際、フィールドの空欄禁止属性やデフォルト値などのオプションを設定
- テーブルとそのフィールドの情報をテキストファイルに書き出す
○ access11.rb.txt
- ALTER TABLE の例:既存のテーブルにフィールドを追加したり、既存のフィールドのデータ型を変更したりする
- 「ID,氏名」のテーブルに「メモ」(varchar型)を追加
- 次に、その「メモ」のデータ型をtextに変更
- 最後に「メモ」というフィールドを削除
○ access12.rb.txt
- Excelファイル(data12.xls)のデータを読み込んで Accessデータベースに挿入
- 男女別の身長と体重の平均値を算出(group by の利用)
- 男女別・職業別の人数を集計(transform …… pivot の利用)
◇ 目次に戻る
4. 統計R関連
(1) 単一回答の集計
◇ 実行の条件: 特に条件はない。Officeがインストールされていなくてもよい。
○ single01.rb.txt
- Rプログラムによる単一回答の集計。無回答を除く形。
- data01.csv: 「ID, 性別(男・女), 意見(賛成・中立・反対)」の98人分のデータ
- 男女別・意見別のクロス集計。空欄(無回答)があるとカウントしない。
- 「総数」なしの表、「総数」ありの表、
- 横軸に沿ったパーセントの表、縦軸に沿ったパーセントの表、
- 度数・%の組合せの表、これら5つを出力
○ single02.rb.txt
- Rプログラムによる単一回答の集計。無回答を含む形。
- 素材データが簡略形式の場合を扱う。男:m, 女:f などの場合に対応。
- data02.csv: 「ID, sex(m,f), view(1:賛成,2:中立,3:反対)」の98人分のデータ
- 男女別・意見別のクロス集計。空欄(無回答)もカウントする。
○ single03.rb.txt
- Rプログラムによる単一回答の集計。有効回答と無効回答の両方を含む形。
- Excelファイルを読み込んで集計する。
- data03.xls: 「ID, 性別(男・女), 意見(賛成・中立・反対)」の98人分のデータ
- 男女別・意見別のクロス集計。有効回答(1種の小計)と無効回答の両方を含む。
○ single04.rb.txt
- Rプログラムによる単一回答の集計。3分類カテゴリーを2分類に変更して集計
- data01.csv: 「ID, 性別(男・女), 意見(賛成・中立・反対)」の98人分のデータ
- 「賛成, 中立, 反対」の3分類を「賛成派, 反対派」の2分類に変更
- 「中立」を「賛成派」に組み入れる
- Rプログラムの中で、関数を定義する例になっている
(2) 複数回答の集計
◇ 実行の条件: 特に条件はない。Officeがインストールされていなくてもよい。
○ multi01.rb.txt
- Rプログラムによる複数回答の集計。主な情報源(複数選択可)を集計
- data01.csv: 「ID,年齢層,新聞,雑誌,テレビ,ラジオ」の98人分のデータ
- 2列目の「年齢層」(20代,30代,40代)は単一回答
- 3〜6列目の「新聞,雑誌,テレビ,ラジオ」は複数選択の回答。1または空欄
- 年齢層別に主な情報源がどれくらい選択されているかをみる。
- 複数回答の選択個数の状況も出力
○ multi02.rb.txt
- Rプログラムによる複数回答の分解的集計。カイ2乗検定も行う。
- data01.csv: 「ID,年齢層,新聞,雑誌,テレビ,ラジオ」の98人分のデータ
- 主な情報源(新聞,雑誌,テレビ,ラジオ)が「複数選択可」の回答。1か空欄
- 複数選択の回答について、選択の有無(二択)と捕らえて分割表を生成
- 各分割表で有意性が認められた時に限り、調整済み残差を出力する。
○ multi03.rb.txt
- 複数回答だけに着目して、その相互の選択状況をみる
- data01.csv: 「ID,年齢層,新聞,雑誌,テレビ,ラジオ」の98人分のデータ
- 主な情報源(新聞,雑誌,テレビ,ラジオ)の複数回答の選択状況として、新聞と雑誌の両方を選択した人が何人いるかなどをみる
- 各々の選択肢の組合せを一通りみる。
- 「基本表, 該当数つきの表, 横軸パーセント, 対総数のパーセント」を出力
○ multi04.rb.txt
- Rプログラムによる複数回答の分解的集計。フィッシャーの直接確率検定も行う
- data01.csv: 「ID,年齢層,新聞,雑誌,テレビ,ラジオ」の98人分のデータ
- 主な情報源(新聞,雑誌,テレビ,ラジオ)が「複数選択可」の回答。1か空欄
- 複数選択の回答について、選択の有無(二択)と捕らえて分割表を生成
(3) 数値データの集計
◇ 実行の条件: 特に条件はない。Officeがインストールされていなくてもよい。
○ numeric01.rb.txt
- 数値データの集計。1つの値だけを返す関数(mean, sdなど)を利用するケース
- data01.csv: 「ID, 性別(m | f), 年齢, 支出」の98人分のデータ
- 「年齢」と「支出」(月あたり支出額のつもり)が数値データ
- 男女別に、年齢と支出の平均値・標準偏差・中央値を算出して表を作る
- 結果を z_numeric01.htm として出力
○ numeric02.rb.txt
- 数値データの集計。複数の値を返す関数(summary)を用いるケース
- data01.csv: 「ID, 性別(m | f), 年齢, 支出」の98人分のデータ
- 「年齢」と「支出」(月あたり支出額のつもり)が数値データ
- 男女別に、年齢と支出の分布情報(最小値・最大値・4分位点等)を出力
- 結果を z_numeric02.htm として出力
○ numeric03.rb.txt
- 数値データのカテゴリー化。年齢(数値)を「20代・30代・40代」に3分類
- data01.csv: 「ID, 性別(m | f), 年齢, 支出」の98人分のデータ
- 「年齢」と「支出」(月あたり支出額のつもり)が数値データ
- 「年齢」と「支出」をカテゴリー化して集計
- Rプログラムの cut() が数値データのカテゴリー化の要点
- Rプログラムの seq() は等差数列を生成。カテゴリー化の際に利用
- 結果を z_numeric03.htm として出力
○ numeric04.rb.txt
- 日付データの分布状況と、2つの日付の日数差を確認
- data02.csv: 「ID, 長男の誕生日, 次男の誕生日」の100人分のデータ
- 誕生日は「1990-10-29」などの形式で記入されている。これをdate型として処理
- 結果を z_numeric04.htm として出力
(4) 統計的検定
◇ 実行の条件:
try_lm02.rb.txtの実行にはインターネット接続環境が必要。それ以外は特に条件はない。Officeがインストールされていなくてもよい。
○ try_chi01.rb.txt
- 合計欄のないクロス集計表を読み込んでカイ二乗検定を行い、htmlを出力
- まず markdown を生成し、それをhtmlに変換。その変換に kramdown(ruby用ライブラリ) を利用
- 目次付きのhtmlを生成
- 素材表をグラフにした z_chi01.png を出力(モザイクプロット)
○ try_chi02.rb.txt
- Excelファイルを読み込んでカイ二乗検定を行う
- markdownを生成し、それをhtmlおよびワード文書に変換
- cccなどの三重変数名をmarkdownに簡単に盛り込むための仕組みを利用
- 別のファイルを読み込む時にも応用できるように工夫(汎用性を追求)
○ try_ft01.rb.txt
- 統計解析のF検定とt検定の例(data_ft.csvを読み込んで分析)
- 男女間で、身長と体重に違いがあるか否かを検証する
- 解析結果をhtmlとして書き出す(z_ft01.htm)
- 文書先頭に目次を付加
- 散布図(z_ft.png)も書き出す
○ try_ft02.rb.txt
- 統計解析のF検定とt検定の例(data_ft.csvを読み込んで分析)
- 男女間で、身長と体重に違いがあるか否かを検証する
- 解析結果をTeXおよびpdfとして書き出す(z_ft02.tex, z_ft02.pdf)
- 文書先頭に目次を付加
- 散布図(z_ft.pdf)も書き出す
- LaTeXでは、空白を含むファイル名がトラブルの原因になるので注意
○ try_lm01.rb.txt
- 単回帰分析結果のレポート(htmlとして出力)
- csvを読み込んで分析する
- 散布図と回帰直線の図を作成
○ try_lm02.rb.txt
- 単回帰分析結果のレポート(docxとして出力)
- Web上のExcelファイルを読み込んで分析する
- 散布図と回帰直線の図を作成
- MarkDown原稿部分は、実は try_lm01.rb.txt と全く同じ
◇ 目次に戻る
5. PDFの出力
(1) markdown現行のPDF出力
◇ 実行の条件: スクリプトによって異なるが、rubyの他に、pandoc, LaTeXなどが必要。
○ kramdown_prawn.rb.txt
- kramdown, prawn(どちらもruby用ライブラリ)によるPDF生成。TeXを用いない。
- 数式, 脚注などを扱えないという制約はあるが、変換処理時間が短い。
- 拙作 kpdf.rb を利用。
- 日本語フォントには、rptパッケージに入っているipaフォントを利用。
○ kramdown_tex.rb.txt
- markdownをkramdownによりTeXに変換し、LaTeXのコマンドでPDF生成
- プログラムソース、表、脚注を含む文書
○ pandoc_lualatex.rb.txt
- pandocによるPDF生成。–latex-engine=lualatexオプションを指定。
- 数式とグラフ(画像)をPDFに書き出す。
- pandocが、TeXの原稿作成とlualatexによるPDF生成を一括してやってくれる。TeXの原稿は残らない。
(2) Excel・Word・PowerPointによるPDF出力
◇ 実行の条件: Excel, Word, PowerPointがインストールされている必要がある。
Office2007以降であることが条件。Excel2003などでは実行できない。
○ excel_test.rb.txt
- ExcelのワークブックをPDFファイルとして出力
- z_excel_all.pdf: ワークブックをすべてPDFに出力
- z_excel_part.pdf: ワークブックの一部をPDFに出力
○ word_test.rb.txt
- MS-Wordの文書をPDFファイルとして出力
- z_word_all.pdf: 文書をすべてPDFに出力
- z_word_part.pdf: 文書の一部をPDFに出力
○ ppt_test.rb.txt
- PowerPointのプレゼンテーションをPDFファイルとして出力
- z_ppt_all.pdf: プレゼンテーションをすべてPDFに出力
- z_ppt_part.pdf: プレゼンテーションの一部(第2スライドのみ)をPDFに出力
◇ 目次に戻る
rptのトップページへ
トップページへ