189

カスタムレポートの作成に関連するデータ分析のワークフローについて、誰かが何か知恵を持っていますか?ユースケースは基本的にこれです:

  1. クライアントは、データ分析を使用するレポートを委託します。たとえば、人口推計や水域の関連マップなどです。

  2. アナリストは、いくつかのデータをダウンロードし、データを変更して結果を保存します(たとえば、ユニットあたりの人口の列を追加したり、地区の境界に基づいてデータをサブセット化したりします)。

  3. アナリストは、(2)で作成されたデータを分析し、目標に近づきますが、より多くのデータが必要であることがわかったため、(1)に戻ります。

  4. テーブルとグラフィックがQA/QCを満たし、クライアントを満足させるまで、繰り返しすすぎます。

  5. 表とグラフィックを組み込んだレポートを作成します。

  6. 来年、幸せなクライアントが戻ってきて、アップデートを望んでいます。これは、仕様が変更されない限り、新しいダウンロード(たとえば、昨年の建築許可を取得)によってアップストリームデータを更新し、[RECALCULATE]ボタンを押すのと同じくらい簡単なはずです。

現時点では、ディレクトリを開始して、できる限りアドホックに作成しています。より体系的なアプローチが必要なので、誰かがこれを理解してくれることを期待しています...スプレッドシート、SQL、ARCGIS、R、およびUnixツールを組み合わせて使用​​しています。

ありがとう!

PS:

.RData以下は、さまざまな中間データセット(サフィックス付き)およびスクリプト(サフィックス付き)への依存関係をチェックする基本的なMakefileです.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

14 に答える 14

199

私は通常、プロジェクトを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を調べて実行された分析を見つけることができます。

于 2009-09-16T17:34:34.097 に答える
97

いくつかの例をご覧になりたい場合は、オンラインで利用できるいくつかの小さな(そしてそれほど小さくはない)データクリーニングおよび分析プロジェクトがあります。ほとんどの場合、データをダウンロードするためのスクリプト、データをクリーンアップするためのスクリプト、および調査と分析を行うためのスクリプトがいくつかあります。

最近、スクリプトに番号を付け始めたので、スクリプトを実行する順序は完全に明らかです。(私が本当に空想を感じている場合は、探索スクリプトがクリーニングスクリプトを呼び出し、次にダウンロードスクリプトを呼び出し、それぞれが必要最小限の作業を実行するようにすることがあります。通常は、で出力ファイルの存在を確認しますfile.exists。ただし、ほとんどの場合、これはやり過ぎのようです)。

私はすべてのプロジェクト(ソースコード管理システム)にgitを使用しているので、他の人と簡単に共同作業したり、何が変更されているかを確認したり、以前のバージョンに簡単にロールバックしたりできます。

正式なレポートを作成する場合、通常はRとlatexを分離しsourceますが、レポートに必要なすべてのコードと出力をRコードで生成できることを常に確認しています。私が行っている種類のレポートでは、ラテックスを使用するよりも簡単でクリーンだと思います。

于 2009-09-16T02:09:41.647 に答える
17

他の回答者にも同意します。SweaveはRを使用したレポートの作成に最適です。また、更新された結果でレポートを再構築するのは、Sweave関数を呼び出すのと同じくらい簡単です。すべての分析、データなどを含め、完全に自己完結型です。また、ファイル全体をバージョン管理できます。

レポートの開発にはEclipse用のStatETプラグインを使用し、Sweaveは統合されています(Eclipseはラテックスフォーマットなどを認識します)。Windowsでは、MikTEXを使用するのは簡単です。

また、Beamerを使用して美しいレポートを作成できることも付け加えておきます。通常のレポートの作成も同様に簡単です。Yahoo!からデータを取得する例を以下に含めました。チャートとテーブルを作成します(quantmodを使用)。このレポートは次のように作成できます。

Sweave(file = "test.Rnw")

Beamerドキュメント自体は次のとおりです。

% 
\documentclass[compress]{beamer}
\usepackage{Sweave}
\usetheme{PaloAlto} 
\begin{document}

\title{test report}
\author{john doe}
\date{September 3, 2009} 

\maketitle

\begin{frame}[fragile]\frametitle{Page 1: chart}

<<echo=FALSE,fig=TRUE,height=4, width=7>>=
library(quantmod)
getSymbols("PFE", from="2009-06-01")
chartSeries(PFE)
@

\end{frame}


\begin{frame}[fragile]\frametitle{Page 2: table}

<<echo=FALSE,results=tex>>=
library(xtable)
xtable(PFE[1:10,1:4], caption = "PFE")
@

\end{frame}

\end{document}
于 2009-09-15T23:56:33.960 に答える
17

誰かが見逃した場合に備えて、JeffreyHornerのbrewパッケージを使用して繰り返しレポートを作成することについてのすばらしい投稿が学習者のブログにあることを付け加えたいと思います。マットとケビンは両方とも上記の醸造について言及しました。自分ではあまり使っていません。

エントリは素晴らしいワークフローに従っているので、一読する価値があります。

  1. データを準備します。
  2. レポートテンプレートを準備します。
  3. レポートを作成します。

最初の2つのステップが完了したら、実際にレポートを作成するのは非常に簡単です。

library(tools)
library(brew)
brew("population.brew", "population.tex")
texi2dvi("population.tex", pdf = TRUE)
于 2009-09-17T05:15:31.137 に答える
15

カスタムレポートを作成するには、ここで提案されている既存のヒントの多くを組み込むと便利です。

レポートの生成: レポートを生成するための優れた戦略には、Sweave、make、およびRの組み合わせが含まれます。

編集者: Sweaveドキュメントを準備するための優れた編集者は次のとおりです。

  • StatETとEclipse
  • EmacsとESS
  • VimとVim-R
  • Rスタジオ

コード編成: コード編成に関して、私は2つの戦略が役立つと思います。

于 2010-12-29T06:40:43.767 に答える
7

ツールではなく、プロジェクトのワークフローについて具体的に質問したという事実に基づいて、他の提出者とは異なる方向で何かを提案します。ドキュメント作成モデルに比較的満足していると仮定すると、課題は実際にはバージョン追跡、資産管理、およびレビュー/公開プロセスの問題に集中しているように思われます。

それが正しければ、 Redmineのような統合された発券/ソース管理/ドキュメント化ツールを検討することをお勧めします。保留中のタスク、ディスカッションスレッド、バージョン管理されたデータ/コードファイルなどの関連するプロジェクト成果物を一緒に保持することは、従来の「プログラミング」の代官管轄区の外にあるプロジェクトでも非常に役立ちます。

于 2009-09-15T23:40:17.937 に答える
7

私はこれのレポート作成側にSweaveを使用していますが、まだ調べていませんが、 brewパッケージについても聞いています。

基本的に、要約統計量を作成するための調査がいくつかあります。毎回同じ調査、同じレポート。レポート用のSweaveテンプレートを作成しました(これには少し手間がかかります)。しかし、作業が完了すると、新しいデータを指摘できる別のRスクリプトができます。「Go」を押すと、Sweaveはいくつかのスコア.texファイルをダンプし、小さなPythonスクリプトを実行してそれらすべてをpdflatexします。私の前任者は、これらのレポートに毎年約6週間を費やしました。私は約3日を費やします(主にデータのクリーニングに費やします。エスケープ文字は危険です)。

今より良いアプローチがある可能性は非常に高いですが、このルートに行くことにした場合は、私に知らせてください-私は私のSweaveハックのいくつかを我慢するつもりでした、そしてそれはパンツの良いキックになるでしょうそれで。

于 2009-09-15T22:44:02.717 に答える
5

LaTeXテーブルを生成するためのxtableを使用して、Sweaveが進むべき道であることに同意しました。私はそれらの作業にあまり時間を費やしていませんが、最近リリースされたtikzDeviceパッケージは、特にpgfSweave(現時点では、rforge.netでのみ利用可能です-があります)と組み合わせると、非常に有望に見えます。そこからr-forgeにリンクしますが、現時点では応答していません)。

2つの間で、テキストと図(フォントなど)の間で一貫したフォーマットが得られます。醸造では、これらはレポート生成の聖杯を構成する可能性があります。

于 2009-09-15T23:18:29.857 に答える
4

「make」は、(1)あらゆる言語ですべての作業に使用できるため(たとえば、SweaveやBrewとは異なり)、(2)非常に強力であり(マシン上ですべてのソフトウェアを構築するのに十分)、優れています。 (3)繰り返し作業を回避します。多くの作業が遅いので、この最後の点は私にとって重要です。ファイルをラテックス化するとき、図を再作成するのにかかる時間ではなく、数秒で結果を確認したいと思います。

于 2010-06-04T11:01:50.763 に答える
4

より「メタ」レベルでは、 CRISP-DMプロセスモデルに興味があるかもしれません。

于 2009-09-16T04:53:55.437 に答える
4

私はRスタジオと一緒にプロジェクトテンプレートを使用していますが、現在私のものには次のフォルダーが含まれています。

  • info :pdfs、powerpoints、docs...これらはどのスクリプトでも使用されません
  • data input :スクリプトによって使用されるが、スクリプトによって生成されないデータ
  • data output:今後の使用のためにスクリプトによって生成されたデータですが、適切なレポートとしてではありません。
  • reports :実際に他の人に表示されるファイルのみ
  • R :すべてのRスクリプト
  • SAS :私は時々しなければならないので:'(

カスタム関数を作成したので、フォルダー(変数名で名前が付けられたファイル)を呼び出しsmart_save(x,y)たり、フォルダー(変数名で名前が付けられたファイル)との間でsmart_load(x)保存またはロードしたりできるため、分析中に煩わされることはありません。RDS filesdata outputpaths

カスタム関数new_projectは、番号付きのプロジェクトフォルダーを作成し、テンプレートからすべてのファイルをコピーし、ファイルの名前を変更しRProjて呼び出しを編集し、setwd作業ディレクトリを新しいプロジェクトに設定します。

すべてRのスクリプトはRフォルダ内にあり、次のように構成されています。


00_main.R
  • setwd
  • スクリプト1〜5を呼び出します

00_functions.R
  • すべての関数と関数のみがそこにあります。関数が多すぎる場合は、いくつかに分けて、すべての名前を付けます。00_functions_something.R特に、それらのいくつかからパッケージを作成する場合は、それらを分解します。

00_explore.R
  • 私が物事をテストしたり、データを調べたりしているスクリプトチャンクの束
  • それは私が散らかることを許されている唯一のファイルです。

01_initialize.R
  • テンプレートフォルダからより一般的なスクリプトへの呼び出しが事前に入力されていinitialize_general.Rます。このスクリプトは、私が常に使用し、ワークスペースにあることを気にしないパッケージとデータをロードします。
  • 負荷00_functions.R(事前入力済み)
  • 追加のライブラリをロードします
  • グローバル変数を設定する

02_load data.R
  • ロードcsv/txt xlsx RDS、すべてのタイプのファイルに対して事前に入力されたコメント行があります
  • ワークスペースで作成されたファイルを表示します

03_pull data from DB.R
  • dbplyrフィルタリングおよびグループ化されたテーブルをDBからフェッチするために使用します
  • 接続を設定してフェッチするための、事前に入力されたコメント行。
  • クライアント側の操作を最小限に抑える
  • このスクリプト以外のサーバー側の操作はありません
  • ワークスペースで作成されたファイルを表示します
  • これらの変数を保存して、より速くリロードできるようにします

ブール値をオフにするquery_dbと、データがRDS次回から再ロードされます。

データをDBに再フィードしなければならない場合があります。その場合は、追加の手順を作成します。


04_Build.R
  • データラングリング、すべての楽しみdplyr/tidyrものはそこに行きます
  • ワークスペースで作成されたファイルを表示します
  • これらの変数を保存します

ブール値をオフにするbuildと、データがRDS次回から再ロードされます。


05_Analyse.R
  • 要約、モデル...
  • レポートexcelcsvファイル

95_build ppt.R
  • 使用するパワーポイントレポートのテンプレートofficer

96_prepare markdown.R
  • setwd
  • データを読み込む
  • 必要に応じてマークダウンパラメータを設定する
  • render

97_prepare shiny.R
  • setwd
  • データを読み込む
  • 必要に応じて光沢のあるパラメータを設定します
  • runApp

98_Markdown report.Rmd
  • レポートテンプレート

99_Shiny report.Rmd
  • アプリテンプレート
于 2017-11-11T12:55:40.997 に答える
2

簡単な予備レポートや同僚へのメールを書くには、プロットをコピーしてMS WordやメールやWikiページに貼り付けるのが非常に効率的であることがわかります。多くの場合、ビットマップのスクリーンショットが最適です(Mac、Appleなど)。 -Shift-(Ctrl)-4)。これは過小評価されているテクニックだと思います。

より最終的なレポートでは、すべてのプロットを(ファイルとして)簡単に再生成するR関数を作成することが非常に重要です。これをコーディングするにはもっと時間がかかります。

より大きなワークフローの問題については、クリーニングと分析のフローのためにコード/データファイルを列挙するというHadleyの答えが好きです。私のデータ分析プロジェクトはすべて同じような構造になっています。

于 2009-09-16T05:20:43.323 に答える
2

声をスウィーブに追加します。複雑なマルチステップ分析の場合は、makefileを使用してさまざまな部分を指定できます。一部だけが変更された場合に、分析全体を繰り返す必要をなくすことができます。

于 2009-09-16T17:22:03.843 に答える
0

Josh Reichが行うことも行いますが、コードとデータの構造化に役立ち、他のユーザーとの共有も非常に簡単なため、個人のRパッケージを作成するだけです。

  1. パッケージを作成する
  2. ロード
  3. 綺麗
  4. 関数
  5. 行う

パッケージの作成:devtools :: create('package_name')

ロードとクリーン:devtools :: use_data(object_name)を使用して、結果のデータオブジェクトをパッケージにロード、クリーニング、および保存するために、パッケージのdata-raw/サブフォルダーにスクリプトを作成します。次に、パッケージをコンパイルします。今後、library(package_name)を呼び出すと、これらのデータが使用可能になります(必要になるまでロードされません)。

関数:分析用の関数をパッケージのR /サブフォルダーに配置し、外部から呼び出す必要のある関数のみをエクスポートします(非表示のままになる可能性のあるヘルパー関数はエクスポートしません)。

do:パッケージに保存されているデータと関数を使用するスクリプトを作成します。(分析を1回だけ実行する必要がある場合は、このスクリプトもdata-raw /サブフォルダーに入れて実行し、結果をパッケージに保存して簡単にアクセスできるようにすることができます。)

于 2016-10-09T17:07:22.687 に答える