

CSVファイルで以下の行列の観測値データ(nxmですが以下ではm=1)の例が存在するとします。

[code]

    1
    100
    200
    1000
    
[/code]

50以下または500以上は異常値としてその異常値を、EmEditorでNAまたは空欄で置き換えられますか？

[code]

    NA
    100
    200
    NA
    
[/code]

または

[code]

    100
    200
    
[/code]

という出力が必要です。

0でおきかえないのは0にするとこのCSVファイルをほかのプログラムで読み込んで(Excelなど)平均値などの統計量を計算するときに、異常値も含めて計算されてしまうからです。

[code]

    0
    100
    200
    0
    
[/code]

だと平均は75ですが

[code]

    NA(または空欄)
    100
    200
    NA(または空欄)
    
[/code]

ですと平均は150です。


CC BY-SA 4.0
2021-09-05T15:25:09.623
82261
2023-11-28T01:53:00.853
2023-11-28T01:53:00.853
3060
48077
question
csv emeditor
CSVに含まれる異常値を任意の記号または空欄に置き換えたい


以下の手順で可能です。

  1. EmEditorで、CSVファイルをCSVセル選択モードで開いたら、該当の列のヘディングをクリックして列選択します。
  2. Ctrl+Hを押して、[置換] ダイアログを表示します。
  3. [選択した範囲のみ] チェック ボックスが設定されていることを確認して、[数値範囲] ラジオ ボタンをクリックします。
  4. [数値範囲を入力] ダイアログが表示されるので、[最小値] に `500` と入力します (小数が存在しない場合は [整数のみ] も設定すると速くなります)。OK をクリックすると、検索する文字列が `[500 , ]` となります。このステップをスキップして、直接、検索する文字列に `[500 , ]` と入力しても構いません。
  5. 検索する文字列が `[500 , ]` となっていることを確認し、置換後の文字列を `NA` として、[すべて置換] ボタンをクリックします。
  6. 同様にして、検索する文字列を `[ , 50]`、置換後の文字列を `NA` としてすべて置換します。

[![EmEditor
数値範囲を入力](https://i.stack.imgur.com/4QHm2.png)](https://i.stack.imgur.com/4QHm2.png)

これを一度に行いたい場合には、次のようなマクロを作成して実行することもできます。このマクロを実行するには、まず、以下のマクロを
`ReplaceNumbers.jsee` などのファイル名で保存します。そして、[マクロ] メニューから [選択]
を選択して、保存したマクロを選択します。そして、CSVファイルをCSVセル選択モードで開いたら、 **該当の列のヘディングをクリックして列選択してから**
、 [マクロ] メニューの [実行] を選択してください。

[code]

    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);
    
[/code]

なお、[カスタマイズ] ダイアログの [ステータス] ページで [平均値] を設定しておけば、ステータス バーに選択範囲の平均値が表示されます。

[![カスタマイズ - ステータス -
選択範囲の数の平均](https://i.stack.imgur.com/rgTU8.png)](https://i.stack.imgur.com/rgTU8.png)


CC BY-SA 4.0
2021-09-05T15:57:20.383
82265
2021-09-05T16:10:39.110
2021-09-05T16:10:39.110
40017
40017
82261
answer