データフィルタ

目次

説明

DataFilter.png

Originは3つのデータ形式(日付/時間、数値、テキスト)でデータフィルタを用意しています。データフィルタはワークシートデータツールバーにあるボタンをクリックして、データフィルタのデータの追加、削除、有効化、無効化、再適用、カスタムフィルタを使用できます。

列リストビュー(表示:列リストビュー)に切り替え、リストビュー列にフィルタを適用すれば、データフィルタを列ラベル行に適用することもできます。詳細は、列リストビュー のデータフィルタ適用を参照してください。

データフィルタを追加または削除

1つまたは複数の列でデータフィルタを追加または削除するには、以下のように行います。

  1. 目的の列を選択します。
  2. データフィルタの追加/削除ボタンButton Add Remove Column Filter.pngをクリックします。

データフィルタが追加されると、デフォルトで空のフィルタが追加され、フィルタ条件はまだ何も入力されていません。フィルタ条件が設定出来たら条件に応じてフィルタに名前が付けられ、フィルタアイコンは緑色になります。

Column Filter 001.png

フィルタが適用された列のデータフィルタの追加/削除ボタンをクリックするとフィルタが削除されます。フィルタアイコンメニューからフィルタを削除しても同じです。

  1. データフィルタのある列を選択します。
  2. フィルタアイコンをクリックすると表示されるコンテキストメニューから、フィルタを削除を選択します。

Column Filter 002.png

フィルタアイコンをなくさずに、適用したフィルタをオン/オフしたい場合は、次で説明するようにフィルタを無効にします。

データフィルタを有効にする/無効にする

データフィルタを追加した場合、有効または無効にするには次のように操作します。

  1. 目的の列を選択します。
  2. データフィルタ有効にする/無効にするボタンButton Enable Disable Column Filter.pngをクリックします。

または

  1. 目的の列を選択します。
  2. フィルタアイコンをクリックしてコンテキストメニューを開き、フィルタを有効にするのチェックと付けて有効にし、チェックを外して無効にします。

Column Filter 003.png

複数列が選択されている場合、最も左側の選択列だけが有効化/無効化されます。

データフィルタが無効化されているとき、フィルタアイコンは灰色になり、フィルタ名には「(OFF)なし」が表示されます。

Column Filter 004.png

もし、フィルタが有効になっている列と無効になっている列が混ざっている範囲を選択した時にButton Enable Disable Column Filter.pngボタンをクリックすると、全ての列でフィルタが無効になります。

データフィルタの再適用

データが更新されたり、フィルタ条件を変更した場合、データフィルタを再適用するボタンButton Reapply Column Filter.pngをクリックします。

Note: LabTalk変数をフィルタ条件に使用する場合があります。一般に、変数のフィルタ条件は、フィルタ実行後にキャッシュされます。したがって、LabTalkで変数の値を変更しても、データフィルタを再適用するボタンButton Reapply Column Filter.pngをクリックしても結果は変わりません。キャッシュに関係なくフィルタ条件のLabTalk変数を更新する場合は、LabTalkメソッドwks.runfilter()を使用してフィルタを再適用します。

デフォルトでは、データコネクタを使用してワークブックを保存すると、インポートされたデータは除外されます(ファイルと一緒に保存されません)。ワークブックにデータフィルタを追加した場合、ファイルを再度開くと、インポート後にデータフィルタが自動的に実行されます。インポート時にデータフィルタを自動実行したくない場合は、@WFI=0と設定します。LabTalkシステム変数の値を変更する方法については、このFAQを参照してください。

データフィルタのコピーと貼り付け

1つのワークシート列からデータフィルタをコピーして他の列に適用することができます。これには、実行前の条件スクリプトパネルで定義された変数を使用するカスタムフィルタが含まれます。

  1. 列のフィルタセルを右クリックしてコピーを選択します。またはフィルタセルをクリックしてCTRL+Cキーを押します。
  2. 次に、対象列を選択し、Ctrl+Vキーでフィルタを貼り付け、それらの列のデータに適用します。

データフィルタの編集

Originは自動的にデータ形式を読み取り、3つのデータフィルタ(日付、数値、テキスト)からその列に適したものを設定します。フィルタ条件はデータフィルタを編集する時に設定する必要があります。

データフィルタを編集するには2つの方法があります。

  1. フィルタアイコンをクリックし、コンテキストメニューを開きます。
  2. 各データフィルタタイプでは、いくつかのクイックメニュー項目が選択可能になっており、1つ選んで対応するフィルタダイアログを開きます。
  3. データフィルタ条件を設定してOKをクリックします。

または

  1. フィルタアイコンをクリックし、コンテキストメニューを開きます。
  2. カスタムフィルタを選択し、カスタムデータフィルタダイアログを開きます。
  3. データフィルタ条件を設定して、適用またはOKをクリックします。

Column Filter 005.png


フィルタ条件を追加したら、 フィルタセルをダブルクリックしてフィルタを編集できます。

Filter cell customize.png

メニューオプションとダイアログ操作

フォーマットごとに3つのフィルタタイプがあります。

書くフォーマットでメニューオプションが異なります。どのメニューオプションを表示するかは、列フォーマットプロパティで決定されます。

日付フィルタ

フォーマット = 日付の列の場合、以下のフィルタオプションがあります。

Filter menu date.png

等しいをクリックすると、単純な日付フィルタダイアログが開きます。範囲をクリックすると、日付範囲を設定するダイアログが開きます。

Filter simple date filter.png

数式タイプ条件2あるいは、開始終了を設定して、日付のフィルタを行います。

単純なデータフィルターの条件2には、および/あるいはフィルタがあります。デフォルトはなしですが、およびまたはあるいはを選択して、2番目のフィルタ条件を作成できます。

Filter simple date condition2.png
なし 2番目のフィルタ条件なし(デフォルト)
および 抽出した条件に設定した日時がどちらも真であるデータを残して他の行を非表示にします。
あるいは 抽出した条件に設定した日時がどちらか片方が真であるデータを残して他の行を非表示にします。


データフィルタメニューのカスタムフィルタを選択すると開くカスタムデータフィルタダイアログで、より高度なフィルタリングを行えます。

以前は、開始および終了は、単純なテキストフィールドに置き換えられた標準の日付ピッカーコントロールを使用していました。日付ピッカーに戻すには、@DP = 1システム変数を設定します。

Filter revert date picker.png

数値フィルタ

フォーマット = 数値の列の場合、以下のフィルタオプションがあります。

Filter menu numeric.png

等しいより小さいより大きいをクリックすると、単純な数値フィルタダイアログボックスが開きます。範囲をクリックすると、数値範囲を設定するダイアログが開きます。

Filter simple numeric filter.png

数式タイプ条件2あるいは、開始終了を設定して、数値のフィルタを行います。

単純な数値フィルターの条件2には、および/あるいはフィルタがあります。デフォルトはなしですが、およびまたはあるいはを選択して、2番目のフィルタ条件を作成できます。

Filter simple numeric condition2.png
なし 2番目のフィルタ条件なし(デフォルト)
および 抽出条件に設定した数値がどちらも真であるデータを残して他の行を非表示にします。
あるいは 抽出条件に設定した数値がどちらか片方が真であるデータを残して他の行を非表示にします。


上位10または下位10をクリックすると、トップテンダイアログが表示されます。ここでは、項目の数またはパーセントで最高値または最低値を除くすべての値を除外することができます。

Filter numeric topN.png


データフィルタメニューのカスタムフィルタを選択すると開くカスタムデータフィルタダイアログで、より高度なフィルタリングを行えます。

テキストフィルタ

テキストフィルタは選択した列のデータ形式がテキスト曜日であるものに適用されます。

クイックメニューから、チェックボックスを選択/選択解除して、対応するテキストエントリを表示/非表示にすることができます。

Column Filter Menu 002.png

カスタムフィルタ (単純なテキスト)

カスタムフィルタをクイックメニューアイテムから選ぶとカスタムフィルター(単純なテキスト)ダイアログが開きます。

Column Filter Menu 003.png

テキストフィルタを使用した後、フィルタラベル行はフィルタで非表示になっていないテキストエントリのリストを表示します。デフォルトで、セル内のエントリはスペース (" ")で区切られています。システム変数 @TFSでは0=Enter、1=スペース、2=カンマ、 3=セミコロンとなり、区切り文字を切り替えることができます。

Filter text label row.png

もう一つのシステム変数 @TFL は、テキストフィルタラベル行の文字の最大数を設定できます。デフォルトでは、50に設定されています。最初の文字列と最後の文字列は常に完全に表示され(ソートはアルファベット順です)、他の文字列は...で表示されます。

これら2つのLabTalkシステム変数については、LabTalkシステム変数リストを参照してください。

縦棒/横棒グラフのX列にテキストが含まれるとき、テキストは主目盛ラベルとして使用され、行番号順に並べられます。Origin 2018より前は、ワークシートデータフィルタを適用したときに、データポイントがプロットされていないにも関わらず、空の目盛とフィルタリングされたデータのラベルが登録されていました。これはOrigin 2018で変更され、フィルタデータに紐づいた目盛は表示されません。カテゴリーとして設定されていないテキストを含むX列に対してのみ適用されます。

Filter X Label Data.png

バージョン2018より前の状態に戻すには、wks.KHRA=1; を使用します(例えば、これをワークブックスクリプトパネルに追加します)。

カスタムフィルタ (高度なテキスト)

詳細チェックを選択するとカスタムフィルター(テキスト形式の詳細)ダイアログが開きます。

Column Filter Menu 004.png


条件を指定する
Column Filter Menu 004 1.png

キーボードからの直接入力とメニュー選択の任意の組み合わせを使用して、条件を作成できます。ダイアログボックスには、いくつかの重要な要素(ワイルドカード文字、行番号)が表示され、条件式の例が表示されます。

サンプル 説明
NOT(make="Buick" OR make="Chrysler") "Buick" と "Chrysler"を除外
 !(make="Buick" OR make="Chrysler") "Buick" と "Chrysler"を除外
!(make="Buick" || make="Chrysler") "Buick" と "Chrysler"を除外
シンボル 使用法
 ?(疑問符) 何か1つの文字の代わりに使用します。例えば、"a?c"は"abc"や"adc"をヒットしますが、"abbc"は検索されません。
*(アスタリスク) 他の文字の代わりに使用します。例えば、 "abc*e"は"abcde"や "abcdde"や"abce"を見つけます。
==(等号2つ) 完全一致のために使用します。例えば、x=="a*" は完全一致する"a*"はヒットしますが、"abc"はヒットしません。

次の簡単なチュートリアルはテキストフィルタでワイルドカードをコントロールする方法を示しています。

  1. \Samples\Statistics\ から Automobile.dat ファイルをインポートします。
  2. 列Bを選択し、データフィルタを追加/削除ボタンButton Add Remove Column Filter.pngをクリックします。
  3. フィルタアイコンをクリックし、カスタムフィルタを選択します。
    Column Filter 006.png
  4. 詳細チェックボックスのチェックを付けます。
  5. 条件に次のように入力します。
    x LIKE "S*"
  6. OKをクリックし、確認メッセージが表示された場合ははいをクリックします。
  7. 元のワークシートを見てみると、Sから始まる行のみが残っている事が分かります。

カスタムデータフィルタダイアログ

カスタムデータフィルタダイアログは日付数値データの高度なフィルタリングを実行するために使用します。

Column Filter Menu 001.png

カスタムデータフィルタボタン

テスト 条件に合致する行は元のワークシートでハイライトされ、これらはフィルタ後に残ります。
OK このフィルタ条件を適用し、ダイアログを閉じます。
キャンセル フィルタ条件に加えた変更を適用せずにダイアログを閉じます。
適用 このフィルタ条件を適用しますが、ダイアログは閉じません。


数値フィルタでは一部の組み込み関数がフライアウトメニュー内に表示されません。それらの関数は以下の通りです。

数式 使用法
x.between(x1,x2) ユーザ入力値のx1とx2の間のxのサブ範囲を返します。下記と同じです。
x<=x2 && x>=x1
.

*表の下の注釈を確認してください。

x.top(10,0) xの上位10を返します。
x.top(10,1) xの上位10%を返します。
x.bottom(10,0) xの下位10を返します。
x.bottom(10,1) xの下位10%を返します。
x.top(n,0/1) Xの中で上位n を返します。0が選択されていると、n は項目の個数、1が選択されているとn はパーセントです。
x.bottom(n,0/1) Xの中で下位n を返します。0が選択されていると、n は項目の個数、1が選択されているとn はパーセントです。

* この式では、x1 と x2 は行番号です。この式で変数を使用する場合は、"x1"と "x2"は広く使用されているシステム変数であるため、値が変更される可能性があるので使用しないでください。代わりにページ変数v1...v4の使用を検討します。

テキスト、数値、日付のフィルタのために、Originは、x.count() 関数をサポートし、複製されたデータの数をカウントできます。例えば、3以上の数であるテキストデータを保持するには、カスタムデータフィルタダイアログで以下のようにセットします。 Condition: x.count() > 3

フィルタメニュー

Custom Data Filter Filter Menu.png

フィルタメニューから以下の操作が可能です。

ロードされたフィルタはこのメニューの下部に表示されます(ない場合は「なし」と表示)。

非表示行を無視する

デフォルトでは、フィルタで非表示になった行はグラフ操作では無視されます。以下のいずれかの方法でこれを変更し、非表示行を含めることが可能です。

  1. ワークシートをアクティブにします。
  2. コマンドウィンドウまたはスクリプトウィンドウで以下を実行します。
wks.ignorehidden = 0;

または

  1. メニューからフォーマット:ワークシートの表示属性を選ぶかF4キーを押してワークシートプロパティダイアログを開きます。
  2. その他のタブで、作図と分析で非表示の行は無視するのチェックを外します。
Note: 非表示行は、LTスクリプトおよび値の設定では無視されません。


マスクを適用してデータフィルタを列データに適用する場合、マスクしたデータでもデフォルトで列に表示されます。

データフィルタの際にマスクしたデータを列に表示するかどうかは、システム変数@FBMでコントロールされています。

  • 0:非表示
  • 1:表示

データフィルタを操作に保存する

列をコピーピボットテーブルの、再計算の鍵のアイコンには、3つのワークシートフィルタオプションがあります。これらのオプションは、解析実行後のデータフィルタ条件変更を反映するかどうか制御できます。

Note:列のコピーおよびピボットテーブルの再計算モードは自動または手動に設定する必要があります。

Filters Lock.png

ワークシートフィルタ:ロック

このオプションを選択すると、元の列でワークシートデータフィルタの状態を変更しても、コピー結果は変更されません。そのため、元データのワークシートでフィルタ条件が変更されても、結果の列の更新は行われません。

ワークシートフィルタ:再読み込み

この項目はワークシートフィルタ:ロックをあらかじめ選択しないとアクティブになりません。これは、結果の列に対して元データのフィルタ条件を再読み込みします。たとえば、元データ列のフィルタ条件を変更後、このオプションをクリックすると、結果の列に新しいフィルタ条件が適用され、更新されます。

ワークシートフィルタ:戻る

この項目はワークシートフィルタ:ロックをあらかじめ選択しないとアクティブになりません。これにより、初期のフィルタ条件に戻すことができます。例えば、元データのフィルタ条件を変更後、このオプションをクリックし、元シートに結果の列を戻すためにソース列から最新のフィルタ条件が適用されます。結果の列に直接データフィルタを適用した場合、ソースに戻すことができません。

テキストと現在のフィルタ条件を組み合わせたテキストラベルをグラフに追加できます。例えば、テキスト "Make ="を文字列 "%(1, @LF)"と組み合わせて、フィルタ条件の変化に応じて変化するダイナミックラベルを作成します(ラベルを更新すると、フィルタはロックできません)。

Text label options @LF.png