ソロデータアナリストのRおよびバージョン管理


155

私が尊敬している多くのデータアナリストは、バージョン管理を使用しています。例えば:

ただし、gitなどのバージョン管理システムを採用する価値があるかどうかを評価しています。

簡単な概要: 私はRを使用して研究出版物のデータを分析する社会科学者です。現在、Rパッケージを作成していません。プロジェクトの私のRコードには、通常、データ入力、クリーニング、操作、分析、および出力生成のための数千行のコードが含まれています。出版物は通常、LaTeXを使用して作成されます。

バージョン管理に関しては、私が読んだ多くの利点がありますが、それらはソロデータアナリストにはあまり関係がないようです。

  • バックアップ:すでにバックアップシステムを導入しています。
  • フォークと巻き戻し:これを行う必要性を感じたことはありませんが、どのように役立つかはわかります(たとえば、同じデータセットに基づいて複数のジャーナル記事を準備している、毎月更新されるレポートを準備している、など) )
  • コラボレーション:ほとんどの場合、自分でデータを分析しているため、バージョン管理によるコラボレーションのメリットは得られません。

バージョン管理の採用には、いくつかの潜在的なコストも伴います。

  • バージョン管理システムを評価および学習する時間
  • 現在のファイル管理システムよりも複雑さが増す可能性

しかし、私はまだ何かが足りない気がします。バージョン管理に関する一般的なガイドは、データアナリストよりもコンピュータサイエンティストに向けられているようです。

したがって、具体的に、上記と同様の状況のデータアナリストに関連して

  1. バージョン管理は努力する価値がありますか?
  2. バージョン管理を採用する主な長所と短所は何ですか?
  3. Rを使用したデータ分析のバージョン管理を開始するための適切な戦略は何ですか(例、ワークフローのアイデア、ソフトウェア、ガイドへのリンク)。

2
:あなたはこの読みましたstackoverflow.com/questions/360887/...
マレク

@Marekその投稿は役に立ちます。どうもありがとう。データ分析、R、執筆研究に関連する特定の問題がある場合は、それについて知りたい
Jeromy Anglim 2010

もちろん、最初の質問に対する答えは「はい」です。しかし、通常どのような種類/サイズのデータ​​を処理しますか。ほとんどのCVSシステムでは、バイナリデータの保存に苦労しています。
エドゥアルドレオニ2010

3
また、このを見てみたいことがあります。stackoverflow.com/questions/2286831/...
シェーン

@Eduardo私はプレーンテキスト(たとえば、タブ区切り、固定幅)とバイナリ(データベース、SPSS、Excelなど)ファイルの混合を扱います。データは様々 :典型的な例は、100行は10,000×20 20 X 2,000,000に500列をxは
Jeromy Anglim

回答:


89

私はあなたの質問への答えは確かにあります-バージョン管理システムでファイルを管理する利点は、そのようなシステムを実装するコストをはるかに上回ります。

私はあなたが提起したポイントのいくつかに詳細に対応しようとします:

  • バックアップ:すでにバックアップシステムを導入しています。

はい、そうです。しかし、あなたの仕事に関連する重要でアクティブなファイルを適切に追跡するために、汎用のバックアップシステムに依存することの適切性に関して考慮すべきいくつかの質問があります。パフォーマンスの面では:

  • バックアップシステムはどの間隔でスナップショットを取得しますか?
  • スナップショットの作成にはどのくらい時間がかかりますか?
  • スナップショットを撮るときにハードドライブ全体をイメージ化する必要がありますか、それとも重要な更新を受け取ったばかりの2つのファイルをバックアップするように簡単に指示できますか?
  • バックアップシステムは、正確な精度で、あるバックアップから次のバックアップへのテキストファイルの変更点を示しますか?

最も重要な:

  • バックアップはいくつの場所に保存されますか?コンピュータと同じ物理的な場所にありますか?
  • バックアップシステムから特定のバージョンの単一ファイルを復元するのはどのくらい簡単ですか。

たとえば、Macを所有していて、Time Machineを使用して自分のコンピューターの別のハードドライブにバックアップします。Time Machineは、おかしなファイルを回復したり、問題が発生した場合にシステムを復元したりするのに最適です。しかし、それは単に私の重要な仕事で信頼されるために必要なものを持っていません:

  • バックアップする場合、Time Machineはハードドライブ全体をイメージ化する必要があり、かなりの時間がかかります。作業を続行した場合、バックアップを開始したときの状態でファイルがキャプチャされる保証はありません。最初のバックアップが完了する前に、保存したい別のポイントに到達することもあります。

  • Time Machineのバックアップが保存されているハードドライブが私のマシンにあるため、データが盗難、火災、その他の災害に対して脆弱になります。

Gitのようなバージョン管理システムを使用すると、テキストエディターでの保存を要求するという手間をかけずに、特定のファイルのバックアップを開始できます。ファイルは即座にイメージ化されて保存されます。さらに、Gitは配布されているので、私が働いている各コンピューターにはリポジトリーの完全なコピーがあります。

これは、4つの異なるコンピューター間で私の作業をミラーリングすることになります。神の行為が私のファイルとデータを破壊することはできませんが、その時点ではおそらくあまり気にしません。

  • フォークと巻き戻し:これを行う必要性を感じたことはありませんが、どのように役立つかはわかります(たとえば、同じデータセットに基づいて複数のジャーナル記事を準備している、毎月更新されるレポートを準備している、など) )

ソリストとして、私はそれほどフォークしません。ただし、巻き戻しのオプションを使用することで節約できた時間は、バージョン管理システムの学習への投資を何度も何度も払い戻しました。これを行う必要性を感じたことは一度もないというのに、現在のバックアップシステムでファイルを巻き戻すのは、本当に簡単で実行可能なオプションでしたか?

時々、レポートは45分、1時間、または2日前に見栄えがよくなっただけです。

  • コラボレーション:ほとんどの場合、自分でデータを分析しているため、バージョン管理によるコラボレーションのメリットは得られません。

はい。しかし、プロジェクトで他の人と共同作業をすることになる場合に不可欠であることがわかるツールを学びます。

  • バージョン管理システムを評価および学習する時間

これについてはあまり心配しないでください。バージョン管理システムはプログラミング言語のようなものです。それらには、学習する必要があるいくつかの重要な概念があり、残りは構文上の砂糖です。基本的に、最初に学ぶバージョン管理システムは、最も時間をかけて別のバージョン管理システムに切り替える必要があり、新しいシステムが主要な概念をどのように表現するかを学ぶ必要があります。

人気のシステムを選んで、それを試してください!

  • 現在のファイル管理システムよりも複雑さが増す可能性

Projectsデータ分析アクティビティに関連するすべてのフォルダーとファイルを含む1つのフォルダーがありますか?その場合、バージョン管理を平手打ちすることで、ファイルシステムの複雑さが正確に増加します0。あなたのプロジェクトは、あなたのコンピュータについて散らばっているなら、あなたはバージョン管理を適用する前にそれらを集中管理する必要があり、これは終わるだろう減少我々が持っている理由です、あなたのファイル-の管理の複雑さDocuments、すべての後にフォルダを。

  1. バージョン管理は努力する価値がありますか?

はい!それはあなたに巨大な元に戻すボタンを与えて、あなたがあなたのUSBドライブを失うことのようなことを心配することなく、マシンからマシンへ簡単に仕事を移すことを可能にします。

2バージョン管理を採用する主な長所と短所は何ですか?

私が考えることができる唯一の欠点は、ファイルサイズのわずかな増加ですが、最新のバージョン管理システムは、圧縮と選択的な保存により、驚くべきことを実行できます。

3 Rを使用したデータ分析のバージョン管理を開始するための適切な戦略は何ですか(例、ワークフローのアイデア、ソフトウェア、ガイドへのリンク)。

データまたはレポートを生成するファイルをバージョン管理下に置いてください。あなたのようなものを使用している場合はSweave、あなたの保存.Rnwファイルではなく.tex、それらから生成されますファイルを。再取得が面倒な場合は、生データを保存してください。可能であれば、データを取得するスクリプトと、生データへの変更を保存するのではなく、データをクリーンアップまたは変更するスクリプトを作成して保存します。

バージョン管理システムについては、Gitとこのガイドをお勧めします。

これらのWebサイトには、Gitを使用した特定のアクションの実行に関連するヒントやコツもいくつかあります。


1
「現在のファイル管理システムよりも複雑さが増す可能性がある」という回答に対する+1。バージョン管理に項目を配置し、バックアッププロセスのスナップショットポイントをきめ細かく制御できるようにすると、バージョン管理によって複雑さが軽減される可能性があります(日付ではなく、機能または変更による回復に非常に役立つ説明も提供します) )。
クリストファーハケット2013

23

私は分析ショップで9年間働いて、分析プロジェクトのバージョン管理の考え方をそのショップに紹介しました。明らかに、私はバージョン管理を強く信じています。ただし、以下の点を指摘しておきたい。

  1. 法廷で使用する可能性のある分析を行っている場合、バージョン管理は適切でない場合があります。これはあなたに当てはまるとは思えませんが、私たちがこれまでに作成したすべてのスクリプトのすべてのバージョンが潜在的に発見可能であることを知ることは、クライアントを非常に緊張させたでしょう。複数のエンゲージメントで再利用されたコードモジュールにはバージョンコントロールを使用しましたが、そのため、エンゲージメント固有のコードにはバージョンコントロールを使用しませんでした。
  2. バージョン管理の最大のメリットは、複数のプロジェクトで再利用されたコードの缶詰モジュールを保存することにあることがわかりました。たとえば、特定の国勢調査PUMS抽出を処理する特定のお気に入りの方法があるとします。このコードをディレクトリに整理し、VCSに配置します。その後、必要に応じて新しいプロジェクトごとにチェックアウトできます。特定のプロジェクトの特定の一般的なデータセットの特別な処理を行う場合は、特定のプロジェクトの特定のコードの特定のブランチを作成すると便利な場合もあります。次に、そのプロジェクトが完了したら、メインブランチにマージする特別なコードの量を決定します。
  3. 処理されたデータをバージョン管理に入れないでください。コードのみ。私たちの目標は、内部で処理されたデータをすべて削除し、ボタンを押して、レポートのすべての番号を最初から再生成できるように、常に完全なスクリプトセットを用意することでした。それが、データに不思議なことに古いバグが残っていないことを確認する唯一の方法です。
  4. 結果が本当に完全に再現可能であることを確認するには、コードをVCSに保持するだけでは不十分です。特定の成果物を作成するために使用されたモジュールのバージョンを注意深く追跡することが重要です。
  5. ソフトウェアに関しては、Subversionでうまくいきました。セットアップと管理は簡単です。私はgitやmercurialのような新しい複雑な分散型VCSの魅力を認識していますが、自分で作業している場合に大きな利点があるかどうかはわかりません。一方で、それらを使用することのマイナス点も知りません。分析環境でそれらを使用したことがないのです。

18

完全を期すために、バージョン管理の採用に関する最新情報を提供したいと思いました。

ソロデータ分析プロジェクトのバージョン管理が非常に役立つことがわかりました。

私はメインのバージョン管理ツールとしてgitを採用しています。最初に、StatETを使用してEclipse内でEgitを使い始めました。現在、私は一般的にコマンドラインインターフェイスを使用していますが、RStudioとの統合はかなり優れています。

データ分析プロジェクトの観点から、バージョン管理をセットアップした経験についてブログに書きました。

投稿で述べたように、バージョン管理の採用には、以下を明確にすることを含む、データ分析プロジェクトについての私の考えに多くの副次的な利点があることがわかりました。

  • ソースファイルと派生ファイルの違い
  • 依存関係の性質:
    • コードの要素間の依存関係
    • プロジェクト内のファイル間の依存関係
    • リポジトリの外部にあるファイルやプログラムとの依存関係
  • リポジトリの性質とリポジトリの分割方法
  • 変更とプロジェクトのマイルストーンをコミットして文書化する性質

2
私もコマンドラインインターフェイスから始めました(知っておくと便利です)が、R / gitのニーズに合わせて主にRStudioを使用するように切り替えました。それは私が欲しいもののほとんどを提供しますが、インターフェースに直接組み込まれていないいくつかのことをするためにターミナルを開く必要がある場合があります。
Dason 2012

17

私はRとLaTeXを使用して経済学の研究を行っており、常にバージョン管理下に置いています。それは無制限の取り消しを持っているようなものです。Bazaarを試してみてください。これは、習得と使用が最も簡単なものの1つです。Windowsを使用している場合は、グラフィカルユーザーインターフェイス(TortoiseBZR)を備えています。

はい、他の人と一緒に作業する場合、バージョン管理に追加の利点がありますが、単独のプロジェクトであっても、それは非常に理にかなっています。


9

現在、あなたはおそらくあなたの仕事を、あなたがやりたいことをするコードを開発していると考えているでしょう。リビジョン管理システムの使用を採用した後、あなたの仕事はレポジトリにあなたの遺産を書き留め、それに素晴らしい増分変更を加えることと考えるでしょう。それはずっと気分が良いです。


7

ミスをキャッチするためのセーフティネットを用意することは素晴らしいことなので、私はあなたのようなソロアクトのバージョン管理をお勧めします。

私は単独のJava開発者として働いていましたが、今でもソース管理を使用しています。継続的にチェックインしている場合、問題が発生しても1時間以上の作業を失うことはありません。私は心配することなく実験とリファクタリングを行うことができます。それがうまくいかなくても、常に最後の作業バージョンにロールバックできるからです。

その場合は、ソース管理を使用することをお勧めします。学ぶことは難しくありません。


7

バージョン管理ソフトウェアを使用する必要があります。そうしないと、分析が完全に再現されません。

結果をどこかに公開する場合は、スクリプトを作成した時点で、常にスクリプトのステータスを再構築できる必要があります。レビュー担当者の1人がスクリプトの1つでエラーを発見したとします。どの結果が影響を受け、どの結果が影響を受けないかをどのようにして知ることができますか?

この意味で、バックアップシステムはおそらく1日に1回しか実行されず、ラベルが異なるバックアップに適用されないため、どのバージョンがどの結果に対応するのかわからないため、十分ではありません。ファイルを追加する方法と変更をコミットする方法を習得すれば、VCSの学習は思ったよりも簡単です。


1
あなたは強い議論をします。ただし、正式なバージョン管理システムがなくても再現性のある調査は可能だと思います。エレガントさや柔軟性に欠けます。私は、Rの出力が自動的に最終的なドキュメントに統合されるように、文芸的プログラミングの原則を使用してRコードを記述しようとしています。その後、この最終製品に関連するファイルを保存できます。
Jeromy Anglim 2010

これは、分析結果全体をデータに再適用するのに役立ちますが、以前のどの結果がエラーの影響を受けたかはわかりません。
dalloliogm

6

バージョン管理は努力する価値がありますか?

大きなYES。

バージョン管理を採用する主な長所と短所は何ですか?

長所:これまでに行ったことを追跡できます。あなたが削除した古い段落が必要になる可能性があるので、latexに特に役立ちます。コンピューターがクラッシュしたり、新しいコンピューターで作業したりすると、データを即座に復元できます。

短所:いくつかの設定を行う必要があります。

Rを使用したデータ分析のバージョン管理を開始するための適切な戦略は何ですか(例、ワークフローのアイデア、ソフトウェア、ガイドへのリンク)。

使い始めるだけです。私はWindowsで亀のSVNをクライアントツールとして使用しており、私の部署にはsvnサーバーがあります。そこにすべてのコードとデータを配置します(そうです、そこにもデータを配置します!)。


6

まず少し後退して、Rパッケージを書く利点を学びましょう!あなたは数千行のコードを含むプロジェクトがあると言いますが、これらはパッケージコードのように構造化または文書化されていませんか?すべての関数のドキュメント、通常のキャッチが困難なエラーの多くのテスト、独自のテストスイートを作成する機能など、パッケージの理想に準拠することで大きな成果を得ることができます。

パッケージを作成するための規律がない場合は、適切なリビジョン管理を行うための規律があるかどうかはわかりません。


3
特にIT以外のバックグラウンドから来ている場合は、すべてが旅です。私は現在gitを使用しています。また、Rパッケージのインフラストラクチャーにも手を加え始めています。数千行のコードに関して、これは多くの場合、大量の特異なデータ処理と、仮説に基づくグラフィックとテーブルの作成に起因します。経験によって抽象化が見やすくなりますが、特定の量の特異なコードは、心理的データセットを分析することの意味の一部にすぎません。これは、ProjectTemplateパッケージとSweaveの人気の説明に役立つと思います。
Jeromy Anglim 2011年

5

上記の意見に同意し、「はい、バージョン管理は役に立ちます」と言います。

利点;

  • 研究を記録し、バックアップします(タグ付け)
  • さまざまなアイデアを試して、機能しない場合は戻ることができます(分岐)
  • あなたは他の人とあなたの仕事を共有することができ、彼らはあなたとその変更を共有することができます(私はあなたがこれを指定しなかったことを知っていますが、それは素晴らしいです)
  • ほとんどのバージョン管理システムでは、特定の時点、たとえば、記事を公開のために提出した時点などで、すべてのファイルの圧縮バンドルを簡単に作成できます。これは、他の人が記事をレビューするときに役立ちます。(これは手動で行うことができますが、バージョン管理がそれを行うだけでこれらのプロセスを構成する理由)

ツールセットに関しては、StatEtEclipseがうまく機能しているGitを使用していますが、Eclipseを使用する必要はありません。Eclipse用のGitプラグインはいくつかありますが、通常はコマンドラインオプションを使用します。


私はStatETとEclipse for Rを使用しています。だから多分私は最初にgitを試してみるでしょう。
Jeromy Anglim 2010

4

(あらゆる種類の)単独開発用のバージョン管理は、次の場合に非常に興味深いものです。

  • 履歴を探索し、現在の作業と過去のコミットを比較する
  • 同じファイルセットに対して異なるバージョンを分岐して試行する

これら2つの基本的なバージョン管理機能のいずれかを実行していない場合は、単純なバックアップツールで十分です。
これらの機能が必要な場合は、バックアップも取得します(git bundleたとえば)


4

私はまた、単独のスクリプト作成作業を行っており、物事をより複雑にするのではなく、よりシンプルに保つことがわかりました。バックアップはコーディングワークフローに統合されており、個別のファイルシステム手順のセットを必要としません。バージョン管理システムの基本を学ぶのにかかる時間は、間違いなくよく費やされます。


4

Dropboxには「ppor man's」バージョンコントロールがあり、わずかな労力で多くの追加のメリットを得ることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.