1. ホーム
  2. r

[解決済み] 統計解析・報告書作成のためのワークフロー

2022-04-14 11:15:18

質問

カスタムレポートの作成に関連するデータ分析のワークフローについて、どなたかお知恵を拝借できませんでしょうか。 ユースケースは基本的にこのような感じです。

  1. クライアントからデータ分析を用いたレポート(例:水郷地帯の人口推計と関連地図)を依頼される。

  2. アナリストはデータをダウンロードし、データを加工して結果を保存します(単位当たりの人口の列を追加したり、地区の境界に基づいてデータをサブセットするなど)。

  3. 2)で作成したデータを分析し、目標に近づいたが、さらにデータが必要であることがわかり、(1)に戻る。

  4. 表や図がQA/QCを満たし、クライアントを満足させるまで繰り返す。

  5. 表や図版を組み込んだ報告書を作成する。

  6. 来年、クライアントが再びやってきて、更新を要求する。 これは、仕様が変更されない限り、新しいダウンロードによって上流データを更新し(例えば、昨年の建築許可証を取得する)、"RECALCULATE" ボタンを押すのと同じくらい簡単であるべきです。

今のところ、ディレクトリを立ち上げて、その場しのぎでやっています。 もっと体系的なアプローチが欲しいので、誰かがこれを理解していることを期待しているのですが...。 私は、スプレッドシート、SQL、ARCGIS、R、Unixのツールを組み合わせて使っています。

ありがとうございます。

PS:

以下は、様々な中間データセットへの依存をチェックする基本的な Makefile です (w/w)。 .RData サフィックス)とスクリプト( .R サフィックス)。 Make はタイムスタンプを使って依存関係をチェックするので、もし touch ss07por.csv このファイルは、それに依存しているすべてのファイル/ターゲットよりも新しいことがわかり、それに応じてそれらを更新するために与えられたスクリプトを実行します。 これはまだ作業中で、SQL データベースに入れるステップや、sweave のようなテンプレート言語用のステップも含まれています。Make の構文はタブに依存しているので、カットアンドペーストする前にマニュアルを読んでください。楽しんで、フィードバックしてください。

http://www.gnu.org/software/make/manual/html_node/index.html#Top

R=/home/wsprague/R-2.9.2/bin/R

persondata.RData : ImportData.R ../../DATA/ss07por.csv Functions.R
   $R --slave -f ImportData.R

persondata.Munged.RData : MungeData.R persondata.RData Functions.R
      $R --slave -f MungeData.R

report.txt  TabulateAndGraph.R persondata.Munged.RData Functions.R
      $R --slave -f TabulateAndGraph.R > report.txt


解決方法は?

私は通常、プロジェクトを4つのピースに分割しています。

  1. load.R
  2. clean.R
  3. func.R
  4. do.R

load.R:必要なデータをすべて読み込む。通常、これは短いファイルで、ファイル、URL、ODBCからデータを読み込む。この時点でプロジェクトによっては、ワークスペースを save() または、次のステップのためにメモリに保存しておくだけです。

clean.R:欠損値の処理、データフレームのマージ、外れ値の処理など、醜いものはすべてここにある。

func.R: 実際の分析に必要なすべての関数が含まれています。 source() このファイルを作成しても、関数定義を読み込む以外の副作用はないはずです。つまり、このファイルを修正すれば、ステップ1と2を繰り返すことなく、再ロードすることができます。

do.R: func.R で定義された関数を呼び出して分析を行い、チャートと表を作成する。

このセットアップの主な動機は、大きなデータを扱うときに、後続のステップに変更を加えるたびにデータを再読み込みする必要がないようにするためです。また、このようにコードを区分けしておくことで、長い間忘れていたプロジェクトに戻り、load.Rを読んでどのデータを更新する必要があるかを素早く判断し、do.Rを見てどんな分析を行ったかを判断することができるのです。