行と列の取り出し
本講座の冒頭で4つのデータ形式について示しました(再掲します)。
1 1 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
2 2 9 6 2 3 5 8 0 6
| 3 ---> data2.txt | 3 7 6 6 1 3 2 9 4
v 4 v 4 4 8 4 6 2 7 8 2
data1.txt 5 data3.txt 5 0 5 5 8 4 7 7 6
6 6 5 1 4 8 3 5 9 5
7 data4.txt <--- 7 3 7 2 5 0 9 6 1
8 8 9 4 1 3 4 3 6 4
9 9 3 1 7 7 3 1 0 3
rpnが得意な形式はB形式でしたが、今までの説明はC形式とB形式の相互変換でした。では、D形式はどうすればいいでしょうか。Dの形式を計算するには3つの方法があります。
- Dの形式から特定の1行を取り出して計算する。
- Dの形式から特定の1列を取り出して計算する。
- Dの形式のまま計算する。
3つの方法とも、カンタン分析パッケージであれば、row, rows, col, colsなどのrpnプログラムで難なくできるのですが、基本に立ち返ってそれらを使わずに行と列を取り出してみましょう。
列データの取り出し
まず、列の取り出しです。例として4列目を取り出すことにしましょう。data4.txtにDのデータ形式が入っていますので、以下のrpn式で取り出すことができます。
4
2
6
4
5
4
2
1
7
うまく取り出せましたね。一旦、#1から#9までで9個の数値を記憶して、改めて@4で4列目のデータを取り出しています。注意点は列データの数値を記憶する順番が9から1へと逆順になることです(rpnが逆ポーランド電卓なので)。
行データの取り出し
次は4行目を取り出してみましょう。rpnでは行の取り出しはちょっと面倒で、いったん縦横を変換して、同じように4列目を取り出して、再度縦横変換します。具体的に示したほうが分かりやすいですね。
4 4 8 4 6 2 7 8 2
具体的な例で列と行データを取り出してみましょう。以下は2005年の黒点数データですが、1月から3月までを1行目に、そのあと続いて3ヶ月ごとに区切ってデータが格納されています。格納されているファイルはdata5.txtとします。
24 42 39
40 36 21
8 18 41
この行列データの3月、6月、9月、12月のデータを取り出してみましょう。つまり、3列目のデータになるので、一旦、#1から#3まで数値を記憶してから、@3で3列目のデータを取り出します。以下がそのrpn式になります。
24
39
21
41
きちんと3列目が取り出されています。では、次に4月から6月のデータを抜き出してみましょう。一度、縦横変換してから2列目を取り出して、再度変換しています。
24 42 39
うまく取り出せていますね。100列目とか100行目といったとても大きな行列数でない限りこの方法で行と列データを取り出すことができます。
行列データからの行と列の取り出しは、カンタン分析パッケージを利用したほうがはるかに簡単です。100行目、100列目など大きな行列数も問題ありませんし、一行、一列以外にも複数行、複数列などに対応しています。興味があればかんたんデータ分析講座を参照ください。
本講座で使用したプログラムは、ユーティリティーパッケージとして購入することができます。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。