13

最初に言っておきますが、私は正規表現などを優先して手作業でデータをクリーニングすることを熱心に避けています。ただし、避けられない場合もあります。

通常、 Load-Clean-Func-Doワークフローのようなものを使用するので、これは明らかにクリーニング フェーズに適合します。ただし、手動で編集すると、更新が必要な場合に手動でクリーニングする前に実行できなくなります。

これを処理するには、少なくとも 3 つの方法が考えられます。

  1. 手作業による変更をワークフローのできるだけ早い段階で行い、その後のすべてが実行可能なままになるようにします。
  2. 単一の変更ごとに正規表現または代入演算を書き出します。
  3. 変更を加えたスプレッドシートを閉じた後、(2) を生成するツールを使用します。

2 の問題は、非常に扱いにくいことです。3 の問題は、R 用にそのようなツールが存在することを私が知らないことです。Stata はこれを非常にうまく実装しています。

質問は次のとおりです。

  • 最もストレスの少ないコード記述で、最も再現性の高いコードが得られるのはどれですか?
  • (3)のようなツールはありますか?
4

1 に答える 1

8

手洗いは一般的にかなり悪い考えであることに同意します. ただし、やむを得ない場合もあります。2つのうちの1つ、または両方をお勧めします。

  1. 3 つの変数「case_id」、「variable_name」、「value」を含む「データ修正」で別のデータ ファイルを保持します。これを使用して、元のデータのどの値を置き換える必要があるかに関する情報を保存します。クリーニングに関する追加情報にいくつかの追加変数を追加できます (たとえば、変数 "variable_name" の値をケース "case_id" の "value" に置き換える必要がある理由など)。次に、元のデータをロードし、「修正」ファイルの追加情報でクリーンアップする短い R コードを作成します。

  2. おそらく、git や subversion などのバージョン管理システムの使用を開始する必要があります (他のプログラムもあります)。データに対するすべての手動変更は、個別のコミットとしてシステムに記録できます。一日の終わりまでに、いつ、どのような変更をデータに加えたかをログで簡単に確認できるようになります。さらに、元のデータ ファイルをクリーンなデータ ファイルに変換するパッチ ファイルを生成できます。R コード ファイルをバージョン管理することも有益です。

于 2012-09-30T20:58:17.327 に答える