LibreOffice Calc において等間隔でデータをサンプリングする

表計算ソフトには,等間隔でデータを取り出す「サンプリング」という機能があります.まずはLibreOffice Calcで見てみましょう。(6.3.1.2で試していますが,この機能自体は4.2からあるようです.)

今回サンプリングするのは,このようなデータです(自然エネルギー学科「自然エネルギー実験II」で使うデータを,任研究室のWebサイトから拝借しています).

A列には(光の)波長,B列にはその波長に対応した何らかの感度が入っています.これは1 nmごとのデータですが,(他の測定値との比較をするなどの理由で)これを5 nm間隔にしたものが欲しいとします.

ちなみにそれを実現するには,vlookup関数を使う方法もあります(比較先の波長データに対応した値をピックアップする).学生にも何度か口走っていますが,vlookup関数は非常に重要な関数です.vlookup関数を知らずに「Excel(などの表計算ソフト)が得意です」と言ってしまった人は,今すぐその発言を撤回して下さい.そのぐらい重要なものです.

閑話休題,サンプリングの話に戻ります.vlookup関数を使う方法と比較すると,サンプリングを使う場合はもとのデータへの依存(参照)が全くないのが特徴です.(そのこと自体は長所にも短所にもなります.)

手順

前置きが長くなりました.さっそく手順を紹介します.

  1. メニューの[データ] < [統計] < [サンプリング] で[サンプリング]ダイアログを開きます.
  2. [入力範囲]で,もとのデータの範囲を指定します.この指定方法にはコツがあるのですが,それは後述するとして,今はとりあえずヘッダを含むデータ全体を指定します.
  3. [結果貼り付け先]には,結果の貼り付け先を指定します.左上隅のセルだけを指定すればいいようです.
  4. [サンプリング方法]は[周期変化]を選択します.
  5. [周期]には,何行おきにデータを取り出すかを指定します.今は5行おきに取り出したいので,5を入力します.
  6. [OK]をクリックします.結果貼り付け先に,サンプリングされたデータがあるはずです.


んーなるほど.5行目,10行目,…という形でサンプリングするんですね.1行目,6行目,11行目,…とサンプリングされた方が個人的には使いやすいのですが(あるいはオフセットの設定を加えるとか),そういう仕様でしたら仕方がありません.最初に欲しい行が5行目に来るように範囲を指定するしかありませんね.2行目のデータから欲しいような場合は,最初の行だけはコピペで対応することになってしまいます.