質問: CSVファイルで以下の行列の観測値データ(nxmですが以下ではm=1)の例が存在するとします。 1 100 200 1000 50以下または500以上は異常値としてその異常値を、EmeditorでNAまたは空欄で置き換えられますか? NA 100 200 NA または 100 200 という出力が必要です。0でおきかえないのは0にするとこのCSVファイルをほかのプログラムで読み込んで(Excelなど)平均値などの統計量を計算するときに、異常値も含めて計算されてしまうからです。 0 100 200 0 だと平均は75ですが NA(または空欄) 100 200 NA(または空欄) ですと平均は150です。
回答: 以下の手順で可能です。 1. EmEditorで、CSVファイルをCSVセル選択モードで開いたら、該当の列のヘディングをクリックして列選択します。 2. Ctrl+Hを押して、置換] ダイアログを表示します。 3. [選択した範囲のみ] チェック ボックスが設定されていることを確認して、[数値範囲] ラジオ ボタンをクリックします。 4. [数値範囲を入力] ダイアログが表示されるので、[最小値] に `500` と入力します (小数が存在しない場合は [整数のみ] も設定すると速くなります)。OK をクリックすると、検索する文字列が `[500 , ]` となります。このステップをスキップして、直接、検索する文字列に `[500 , ]` と入力しても構いません。 5. 検索する文字列が `[500 , ]` となっていることを確認し、置換後の文字列を `NA` として、[すべて置換] ボタンをクリックします。 6. 同様にして、検索する文字列を `[ , 50]`、置換後の文字列を `NA` としてすべて置換します。 ![EmEditor 数値範囲を入力 これを一度に行いたい場合には、次のようなマクロを作成して実行することもできます。このマクロを実行するには、まず、以下のマクロを `ReplaceNumbers.jsee` などのファイル名で保存します。そして、マクロ] メニューから [選択] を選択して、保存したマクロを選択します。そして、CSVファイルをCSVセル選択モードで開いたら、**該当の列のヘディングをクリックして列選択してから**、 [マクロ] メニューの [実行] を選択してください。 ``` batch_list = editor.filters; batch_list.AddReplace("[500 , ]","NA",0,eeExFindNumberRange); batch_list.AddReplace("[ , 50]","NA",0,eeExFindNumberRange); document.selection.BatchReplace(batch_list,eeFindReplaceSelOnly | eeReplaceAll,0); ``` なお、[カスタマイズ] ダイアログの [ステータス] ページで [平均値] を設定しておけば、ステータス バーに選択範囲の平均値が表示されます。 ![カスタマイズ - ステータス - 選択範囲の数の平均