今回は表計算について,使い方をまとめてみる.
なおUbuntu 8.04 LTSとEmacs22上で, org-6.34c (2010年1月10日リリース)の利用を前提にしている.
リンク
合計の計算
合計を計算するには,合計したい領域をリージョンとして選択する(transient-mark-mode).
たとえば,「200」の「2」の場所で「C-SPC C-SPC」をタイプする.「
」はカーソル位置を示す.
|--------+-------|
| バス | 200 |
| 電車 | 160 |
| 新幹線 | 15000 |
「15000」の右側にカーソルを移動し,「C-c +」をタイプすると合計の「15360」がキルリングに保存されるので,「C-y」で貼り付けることができる.
ソート
「C-c ^」で,行をソートできる.
たとえば,以下で2列目にカーソルを移動する.
|--------+-------| | バス | 200 | | 電車 | 160 | | 新幹線 | 15000 |
「C-c ^」をタイプし,「n」をタイプすると数値の昇順にソートされる.「n」の代わりに「N」をタイプすれば数値の降順になる.
|--------+-------| | 電車 | 160 | | バス | 200 | | 新幹線 | 15000 |
数式の入力
以下では,次の表を例に用いる(値は適当です).
|----------+----+----+----+----+------| | | Q1 | Q2 | Q3 | Q4 | 合計 | |----------+----+----+----+----+------| | パソコン | 30 | 0 | 50 | 0 | | | ソフト | 5 | 15 | 20 | 3 | | | 通信 | 2 | 2 | 2 | 2 | | |----------+----+----+----+----+------| | 合計 | | | | | | |----------+----+----+----+----+------|
ここで,「C-c }」をタイプすると行と列の名前が表示される.再度「C-c }」をタイプすると表示が消える.
I*1 |A---------+B---+C---+D---+E---+F-----| 1 | | Q1 | Q2 | Q3 | Q4 | 合計 | I*2 |A---------+B---+C---+D---+E---+F-----| 2 | パソコン | 30 | 0 | 50 | 0 | | 3 | ソフト | 5 | 15 | 20 | 3 | | 4 | 通信 | 2 | 2 | 2 | 2 | | I*3 |A---------+B---+C---+D---+E---+F-----| 5 | 合計 | | | | | | I*4 |A---------+B---+C---+D---+E---+F-----|
行の合計
F2の欄,すなわち「パソコン」の行の右端の欄にカーソルを移動する.
|----------+----+----+----+----+------|
| | Q1 | Q2 | Q3 | Q4 | 合計 |
|----------+----+----+----+----+------|
| パソコン | 30 | 0 | 50 | 0 | |
| ソフト | 5 | 15 | 20 | 3 | |
| 通信 | 2 | 2 | 2 | 2 | |
|----------+----+----+----+----+------|
| 合計 | | | | | |
|----------+----+----+----+----+------|
「C-c =」をタイプすると「Column formula F&=」とメッセージが表示されるので,「vsum(B&..E&)
」と入力する.すると,同一行の2列目(B)から5列目(E)の合計値である80が6列目(F)に表示され,表の下部に式「$6=vsum($2..$5)
」が表示される.
|----------+----+----+----+----+------| | | Q1 | Q2 | Q3 | Q4 | 合計 | |----------+----+----+----+----+------| | パソコン | 30 | 0 | 50 | 0 | 80 | | ソフト | 5 | 15 | 20 | 3 | | | 通信 | 2 | 2 | 2 | 2 | | |----------+----+----+----+----+------| | 合計 | | | | | | |----------+----+----+----+----+------| #+TBLFM: $6=vsum($2..$5)
式「$6=vsum($2..$5)」は, 6列目の値が2列目から5列目の合計であることを表している.
「TBLFM」の行にカーソルを移動し「C-c C-c」をタイプすると,すべての行に対してこの計算式が適用される.素晴らしい!
|----------+----+----+----+----+------| | | Q1 | Q2 | Q3 | Q4 | 合計 | |----------+----+----+----+----+------| | パソコン | 30 | 0 | 50 | 0 | 80 | | ソフト | 5 | 15 | 20 | 3 | 43 | | 通信 | 2 | 2 | 2 | 2 | 8 | |----------+----+----+----+----+------| | 合計 | | | | | 0 | |----------+----+----+----+----+------| #+TBLFM: $6=vsum($2..$5)
なお2行目だけに適用したい場合は,式を「@2$6=vsum(@2$2..@2$5)
」と編集すれば良い.
ここで用いた「vsum」は,合計を求めるEmacs Calcの関数である.「vmean」を用いれば平均値となる.以下に他の関数の一部を示す.
関数 | 値 |
---|---|
vcount(範囲) | データの個数 |
vsum(範囲) | データの総和 |
vprod(範囲) | データの総積 |
vmax(範囲) | データの最大値 |
vmin(範囲) | データの最小値 |
vmean(範囲) | データの(算術)平均 |
vgmean(範囲) | データの幾何平均 |
vhmean(範囲) | データの調和平均 |
vsdev(範囲) | データの標準偏差(N-1) |
vpsdev(範囲) | データの標準偏差(N) |
vvar(範囲) | データの分散 |
vmedian(範囲) | データのメジアン(中央値) |
その他,対数関数,三角関数など多数の関数が利用できる.
列の合計
今度は列の合計である. B5の欄にカーソルを移動する.
|----------+----+----+----+----+------|
| | Q1 | Q2 | Q3 | Q4 | 合計 |
|----------+----+----+----+----+------|
| パソコン | 30 | 0 | 50 | 0 | 80 |
| ソフト | 5 | 15 | 20 | 3 | 43 |
| 通信 | 2 | 2 | 2 | 2 | 8 |
|----------+----+----+----+----+------|
| 合計 | | | | | 0 |
|----------+----+----+----+----+------|
#+TBLFM: $6=vsum($2..$5)
「C-u C-c =」とタイプすると「Field formula B5=」とメッセージが表示されるので,「vsum(@2..@4)
」と入力する.すると, B列の2行目(B2)から4行目(B4)の合計値である37が5行目(B5)に表示され,表の下部に式「@5$2=vsum(@2..@4)
」が追加される.
「TBLFM」の行にカーソルを移動し「C-c C-c」をタイプすると,再計算される(何度か再計算する必要があるかも知れない).
|----------+----+----+----+----+------| | | Q1 | Q2 | Q3 | Q4 | 合計 | |----------+----+----+----+----+------| | パソコン | 30 | 0 | 50 | 0 | 80 | | ソフト | 5 | 15 | 20 | 3 | 43 | | 通信 | 2 | 2 | 2 | 2 | 8 | |----------+----+----+----+----+------| | 合計 | 37 | | | | 37 | |----------+----+----+----+----+------| #+TBLFM: $6=vsum($2..$5)::@5$2=vsum(@2..@4)
同様に操作を続けると以下のようになる.
|----------+----+----+----+----+------| | | Q1 | Q2 | Q3 | Q4 | 合計 | |----------+----+----+----+----+------| | パソコン | 30 | 0 | 50 | 0 | 80 | | ソフト | 5 | 15 | 20 | 3 | 43 | | 通信 | 2 | 2 | 2 | 2 | 8 | |----------+----+----+----+----+------| | 合計 | 37 | 17 | 72 | 5 | 131 | |----------+----+----+----+----+------| #+TBLFM: $6=vsum($2..$5)::@5$2=vsum(@2..@4)::@5$3=vsum(@2..@4)::@5$4=vsum(@2..@4)::@5$5=vsum(@2..@4)
主なキーバインドのまとめ
キー | 処理 |
---|---|
C-c + | リージョン内の数値の合計を計算 |
C-c ^ | 行のソート |
C-c } | 行名,列名の表示/非表示 |
C-c = | 行に対する計算式を入力 |
C-u C-c = | 列に対する計算式を入力 |
C-c C-c | 再計算 |
「Emacs org-modeを使ってみる」の目次
- (1) インストール
- (2) 見出しと項目の編集
- (3) 表の編集
- (4) 表計算
- (5) TODOリスト
- (6) アジェンダ表示
- (7) ハイパーリンク
- (8) メモを取る
- (9) キーバインド1/3
- (10) キーバインド2/3
- (11) キーバインド3/3
- (12) GTDツールとして
- (13) HTMLにエクスポート
- (14) LaTeXにエクスポート
- (15) Beamerにエクスポート
- (16) エクスポート結果
- (17) orgの表を埋め込む
- (18) 計時
- (19) graphvizとditaaの図を埋め込む
- (20) gnuplotを呼び出す
- (21) LaTeX数式のインライン画像表示
- (22) RSSフィードを取り込む
- (23) エクスポート時に利用できるLaTeX記号
- (24) 繰り返し行動の記録
- (25) iCalendarにエクスポート
- (26) タグとプロパティ
- (27) ドローワとアーカイブ
- (28) バッファ内設定一覧
- (29) エクスポートオプション一覧
- (30) CSSクラス名一覧
- (31) Emacs Lispの実行
- (32) HTML表のスタイル設定
- (33) 脚注と参考文献の利用
- (34) 短縮形リンクの利用
- (35) org-babel-perlを使う1/4
- (36) org-babel-perlを使う2/4
- (37) org-babel-perlを使う3/4
- (38) org-babel-perlを使う4/4
- (39) speedbarを使う
- (40) org-babel-Rを使う1/2
- (41) org-babel-Rを使う2/2
- (42) 日本語化ditaaの利用
- (43) mhcをインポート
- (44) 再びHTMLにエクスポート
- (45) Firefoxからブックマーク