カスタムレポートの作成に関連するデータ分析のワークフローに関する知識はありますか?ユースケースは基本的にこれです:
クライアントは、データ分析を使用するレポートを依頼します。水域の人口推定と関連マップ。
アナリストは、一部のデータをダウンロードし、データを変更して結果を保存します(たとえば、ユニットごとの人口の列を追加したり、地区の境界に基づいてデータをサブセット化したりします)。
アナリストは(2)で作成されたデータを分析し、目標に近づきますが、より多くのデータが必要なため、(1)に戻ります。
テーブルとグラフィックがQA/QCを満たし、クライアントが満足するまで、繰り返し洗浄します。
表とグラフィックを組み込んだレポートを作成します。
来年、幸せなクライアントが戻ってきて、更新を望んでいます。これは、仕様を変更しない限り、新しいダウンロードでアップストリームデータを更新し(たとえば、昨年から建築許可を取得する)、「RECALCULATE」ボタンを押すだけの簡単なものでなければなりません。
現時点では、ディレクトリを開始し、アドホックにできる限り最善を尽くしています。もっと体系的なアプローチが欲しいので、誰かがこれを理解してくれることを望んでいます...私はスプレッドシート、SQL、ARCGIS、R、およびUnixツールを組み合わせて使用しています。
ありがとう!
PS:
以下は、さまざまな中間データセット(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関数.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>レポート。 txt
私は通常、プロジェクトを4つの部分に分けます。
load.R:必要なすべてのデータの読み込みを処理します。通常、これはファイル、URL、および/またはODBCからデータを読み込む短いファイルです。この時点でのプロジェクトに応じて、save()
を使用してワークスペースを書き出すか、次のステップのためにメモリに保存します。
clean.R:これは、すべてのいものが存在する場所です-欠損値の処理、データフレームのマージ、外れ値の処理。
func.R:実際の分析を実行するために必要なすべての機能が含まれています。このファイルをsource()
'することで、関数定義をロードする以外の副作用はありません。つまり、このファイルを変更してリロードすると、大きなデータセットの実行に時間がかかる可能性がある手順1と2を繰り返す必要がなくなります。
do.R:func.Rで定義された関数を呼び出して、分析を実行し、チャートとテーブルを作成します。
このセットアップの主な目的は、大きなデータを操作することです。これにより、後続のステップに変更を加えるたびにデータをリロードする必要がなくなります。また、このようにコードをコンパートメント化しておくと、長い間忘れられていたプロジェクトに戻ってすぐにload.Rを読み取り、更新する必要があるデータを見つけてから、do.Rを調べて実行された分析を見つけることができます。
いくつかの例をご覧になりたい場合は、いくつかの小規模な(それほど小さくない)データクリーニングおよび分析プロジェクトをオンラインで利用できます。ほとんどの場合、データをダウンロードするスクリプト、クリーンアップするスクリプト、および調査と分析を行うスクリプトがいくつかあります。
最近、スクリプトの番号付けを開始しました。そのため、どの順序でスクリプトを実行するかが完全に明らかです。 (私が本当に空想を感じている場合は、探検スクリプトがダウンロードスクリプトを呼び出すクリーニングスクリプトを呼び出すように時々作成します。それぞれが必要な最小限の作業を行います-通常、file.exists
で出力ファイルの存在を確認することにより。しかし、ほとんどの場合、これは過剰に思えます)。
私はすべてのプロジェクト(ソースコード管理システム)でgitを使用しているため、他のユーザーとのコラボレーションが容易で、何が変わっているのかを確認し、以前のバージョンに簡単にロールバックできます。
正式なレポートを作成する場合、私は通常Rとラテックスを分離しますが、レポートに必要なすべてのコードと出力を生成するためにRコードをsource
できることを常に確認します。私が行うレポートの種類については、ラテックスを使用するよりも簡単でわかりやすいと思います。
私は他のレスポンダーに同意します。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}
誰かがそれを見逃した場合に備えて、 繰り返しレポートの作成に関する学習者のブログに素晴らしい投稿があります with Jeffrey Hornerのbrew package を追加したかっただけです。マットとケビンは両方とも上記の醸造について言及しました。私は実際にはあまり使いませんでした。
エントリはNiceワークフローに従っているため、読む価値が十分にあります。
最初の2つのステップが完了したら、実際にレポートを作成するのは非常に簡単です。
library(tools)
library(brew)
brew("population.brew", "population.tex")
texi2dvi("population.tex", pdf = TRUE)
カスタムレポートを作成するには、ここで提案されている既存のヒントの多くを組み込むと便利です。
レポートの生成:レポートを生成するための優れた戦略には、Sweave、make、およびRの組み合わせが含まれます。
エディター:Sweaveドキュメントを準備するための優れたエディターは次のとおりです。
コード編成:コード編成に関しては、2つの戦略が有用だと思います:
あなたが具体的にプロジェクトのワークフローについて尋ねたという事実に基づいて、他の提出者とは異なる方向に何かを提案するつもりですツール。ドキュメント作成モデルに比較的満足していると仮定すると、バージョントラッキング、アセット管理、およびレビュー/公開プロセスの問題を中心に課題が集中しているように思えます。
それが正しいように思える場合は、 Redmine のような統合チケット/ソース管理/文書化ツールを検討することをお勧めします。保留中のタスク、ディスカッションスレッド、およびバージョン化されたデータ/コードファイルなどの関連プロジェクトアーティファクトを一緒に保持することは、従来の「プログラミング」のバイリウィック以外のプロジェクトでも大きな助けになります。
このレポート作成側に Sweave を使用しますが、 brew パッケージについても聞いていますが、まだ調査していません。
基本的に、要約統計を作成するための調査がいくつかあります。毎回同じ調査、同じレポート。レポート用にSweaveテンプレートを作成しました(少し手間がかかります)。しかし、作業が完了したら、新しいデータを指摘できる別のRスクリプトがあります。 「Go」を押すと、Sweaveはいくつかのスコア.texファイルをダンプし、少しPythonスクリプトを実行してそれらをすべてpdflatexします。約3日間を費やします(主にデータのクリーニングに使用します。エスケープ文字は危険です)。
今より良いアプローチがある可能性は非常に高いですが、もしあなたがこのルートに行くことに決めたら、私に知らせてください。そう。
LaweXテーブルを生成するために xtable を使用して、Sweaveを使用する方法に同意しました。私は彼らとの作業にあまり時間を費やしていませんが、最近リリースされた tikzDevice パッケージは、特に pgfSweave と組み合わせた場合、本当に有望に見えます(私が知る限り、現時点ではrforge.netでのみ利用可能です。そこからr-forgeへのリンクがありますが、現時点では応答していません)。
2つの間で、テキストと図(フォントなど)の間で一貫した書式設定が得られます。醸造では、これらはレポート生成の聖杯を構成する可能性があります。
「make」は素晴らしいです。(1)あらゆる言語のすべての作業に使用できます(たとえば、SweaveやBrewとは異なります)。 (3)繰り返し作業を避けます。多くの作業が遅いため、この最後の点は重要です。ファイルをラテックス化するとき、数字を再現するのにかかる時間ではなく、数秒で結果を見るのが好きです。
より「メタ」レベルでは、 CRISP-DM プロセスモデルに興味があるかもしれません。
同僚に簡単な予備レポートまたは電子メールを書くために、プロットをMS Wordまたは電子メールまたはWikiページにコピーアンドペーストすると非常に効率的であることがわかります。 -Shift-(Ctrl)-4)。これは過小評価されているテクニックだと思います。
より最終的なレポートを作成するには、すべてのプロットを(ファイルとして)簡単に再生成するR関数を作成することが非常に重要です。これをコーディングするのに時間がかかります。
より大きなワークフローの問題については、クリーニングおよび分析フローのコード/データファイルの列挙に関するHadleyの回答が気に入っています。私のデータ分析プロジェクトはすべて同様の構造を持っています。
私はRスタジオと一緒にプロジェクトテンプレートを使用します。現在、私のものには次のフォルダーが含まれています。
info
:pdfs、powerpoints、docs ...これはどのスクリプトでも使用されませんdata input
:スクリプトによって使用されるが、スクリプトによって生成されないデータdata output
:さらなる使用のためにスクリプトによって生成されたデータですが、適切なレポートとしてではありません。reports
:実際に他の誰かに表示されるファイルのみR
:すべてのRスクリプトSAS
:私は時々: '(smart_save(x,y)
またはsmart_load(x)
を呼び出してRDS files
をdata output
フォルダー(変数名で名前が付けられたファイル)に保存またはロードできるようにカスタム関数を作成したため、paths
分析中。
カスタム関数new_project
は、番号付きプロジェクトフォルダーを作成し、テンプレートからすべてのファイルをコピーし、RProj
ファイルの名前を変更し、setwd
呼び出しを編集して、作業ディレクトリを新しいプロジェクトに設定します。
すべてのR
スクリプトは、次のような構造のR
フォルダーにあります。
00_main.R
setwd
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
Excel
およびcsv
ファイル95_build ppt.R
officer
を使用したPowerPointレポートのテンプレート96_prepare markdown.R
setwd
render
97_prepare shiny.R
setwd
runApp
98_Markdown report.Rmd
99_Shiny report.Rmd
声をスウィーヴに追加します。複雑なマルチステップ分析では、 makefile を使用して異なる部分を指定できます。 1つの部分だけが変更された場合、分析全体を繰り返す必要がなくなります。
また、Josh Reichが行うことを行います。個人的なRパッケージを作成するのは、コードとデータを構造化するのに役立ちます。また、それらを他の人と共有するのも非常に簡単です。
パッケージの作成:devtools :: create( 'package_name')
ロードとクリーン:パッケージのdata-raw /サブフォルダーにスクリプトを作成し、devtools :: use_data(object_name)を使用して、結果のデータオブジェクトをパッケージにロード、クリーン、および保存します。次に、パッケージをコンパイルします。これ以降、library(package_name)を呼び出すと、これらのデータが使用可能になります(必要になるまでロードされません)。
functions:分析用の関数をパッケージのR /サブフォルダーに入れ、外部から呼び出す必要があるもののみをエクスポートします(非表示のままにできるヘルパー関数はエクスポートしません)。
do:パッケージに保存されているデータと関数を使用するスクリプトを作成します。 (分析を一度だけ行う必要がある場合、このスクリプトもdata-raw /サブフォルダーに入れて実行し、結果をパッケージに保存して、簡単にアクセスできるようにします。)