21

私は現在、さまざまなソースからさまざまな変数をゆっくりと蓄積しているプロジェクトに取り組んでいます。やや賢い人なので、メインの「original_data」ディレクトリの下にそれぞれ異なるサブディレクトリを作成し、データの取得元のURLとその他の記述子を含む.txtファイルを含めました。賢くない人なので、これらの.txtファイルには構造がありません。

今、私はすべての異なるデータソースを文書化するメソッドセクションをコンパイルするタスクに直面しています。データを調べて構造を追加したいのですが、ディレクトリをスキャンして情報を抽出するためのレポートツールを見つけるか構築する必要があります。

これはすでにあるようなもののようですProjectTemplateが、私はそこにその機能を見つけることができないようです。

そのようなツールは存在しますか?

そうでない場合、最大限の柔軟性を提供するためにどのような考慮事項を考慮する必要がありますか?いくつかの予備的な考え:

  1. マークアップ言語を使用する必要があります(YAML?)
  2. すべてのサブディレクトリをスキャンする必要があります
  3. (2)を容易にするために、データセット記述子の標準拡張を使用する必要があります
  4. 重要なのは、これを最も便利にするために、変数記述子を最終的に使用する名前と一致させる方法が必要です。したがって、変数の名前変更はすべて、クリーニング手順ではなくソースファイルで行う必要があります(理想的とは言えません)、変数名の変更を追跡するためにドキュメントエンジンでコード解析を行う必要があります(うーん!)。変数の名前変更をマークアップファイルで指定できるようにするなど、より単純なハイブリッドを使用する必要があります。
  5. 理想的には、レポートもテンプレート化され(たとえば、「[日付]に[dset]データセットから[var]変数を取得しました。」)、Sweaveにリンクされる可能性があります。
  6. ツールは、過度の負担にならないように十分な柔軟性を備えている必要があります。これは、最小限のドキュメントが単にデータセット名になることを意味します。
4

1 に答える 1

16

これは非常に良い質問です。人々は、統計結果の基礎を形成するデータ収集、集計、変換などのすべてのシーケンスについて非常に心配する必要があります。残念ながら、これは広く実践されていません。

あなたの質問に答える前に、これはデータの出所を管理するという一般的な目的にかなり関連しているように見えることを強調したいと思います。私はあなたにもっと読むためにあなたにグーグルリンクを与えるほうがよいでしょう。:)調査、ソフトウェアツール(例:ウィキペディアのエントリにリストされているもの)、さまざまな研究プロジェクト(例:来歴チャレンジ)など、たくさんのリソースがあります。

これは概念的なスタートであり、実際の問題に対処するためのものです。

私は現在、さまざまなソースからさまざまな変数をゆっくりと蓄積しているプロジェクトに取り組んでいます。やや賢い人なので、メインの「original_data」ディレクトリの下にそれぞれ異なるサブディレクトリを作成し、データの取得元のURLとその他の記述子を含む.txtファイルを含めました。賢くない人なので、これらの.txtファイルには構造がありません。

みんなの悪夢へようこそ。:)

今、私はすべての異なるデータソースを文書化するメソッドセクションをコンパイルするタスクに直面しています。データを調べて構造を追加したいのですが、ディレクトリをスキャンして情報を抽出するためのレポートツールを見つけるか構築する必要があります。

問題ない。 list.files(...,recursive = TRUE)良い友達になるかもしれません。も参照listDirectory()してくださいR.utils

データソースのメソッドセクションに入力することは、データプロバンス内の狭いアプリケーションであることに注意してください。実際、再現性のある研究に関するCRANタスクビューが文書化のみに焦点を当てているのはかなり残念です。データプロバンスの目的は、私の経験では、再現可能な研究のサブセットであり、データ操作と結果の文書化はデータプロバンスのサブセットです。したがって、このタスクビューは、再現性のある研究に関してはまだ初期段階にあります。それはあなたの目的には役立つかもしれませんが、最終的にはそれを超えてしまいます。:)

そのようなツールは存在しますか?

はい。そのようなツールは何ですか?Mondieu...一般的に非常にアプリケーション中心です。Rの中では、これらのツールはあまり注目されていないと思います(*以下を参照)。それはかなり残念なことです-私が何かを見逃しているか、そうでなければRコミュニティが私たちが使用すべき何かを見逃しています。

あなたが説明した基本的なプロセスでは、私は通常JSONを使用します(私が今何をしているのかについてのコメントについては、この回答この回答を参照してください)。私の仕事の多くでは、これを「データフローモデル」として表現しています(ちなみに、この用語は、特にコンピューティングのコンテキストではあいまいになる可能性がありますが、統計分析の観点からは意味があります)。多くの場合、このフローはJSONを介して記述されるため、JSONからシーケンスを抽出して、特定の結果がどのように発生したかを確認することは難しくありません。

より複雑なプロジェクトや規制されたプロジェクトの場合、JSONだけでは不十分です。データベースを使用して、データの収集方法や変換方法などを定義します。規制されたプロジェクトの場合、データベースには、データを確保するために多くの認証やロギングなどが含まれる場合があります。出所は十分に文書化されています。そのようなDBはあなたの興味をはるかに超えていると思うので、次に進みましょう...

1. マークアップ言語を使用する必要があります(YAML?)

率直に言って、データフローを説明するために必要なものは何でも適切です。ほとんどの場合、適切なJSON、適切なデータディレクトリのレイアウト、およびスクリプトの適切な順序付けが適切であると思います。

2. すべてのサブディレクトリをスキャンする必要があります

終わり:listDirectory()

3. (2)を容易にするために、データセット記述子の標準拡張を使用する必要があります

些細なこと:「。json」。;-)または「.SecretSauce」も機能します。

4.重要なのは、これを最も便利にするために、変数記述子を最終的に使用する名前と一致させる方法が必要です。したがって、変数の名前変更はすべて、クリーニング手順ではなくソースファイルで行う必要があります(理想的とは言えません)、変数名の変更を追跡するためにドキュメントエンジンでコード解析を行う必要があります(うーん!)。変数の名前変更をマークアップファイルで指定できるようにするなど、より単純なハイブリッドを使用する必要があります。

述べたように、これはまったく意味がありません。とを取りvar1var2作成するvar3としvar4ます。おそらく、それはその分位数var4への単なるマッピングであり、との観測的な最大値です。または、極端な値を切り捨てて作成することもできます。その場合、私はの名前を保持しますかvar2var3var1var2var4var2var2?一方、単に「長い名前」と「単純な名前」を一致させることを指している場合(つまり、テキスト記述子をR変数に)、これはあなただけができることです。非常に構造化されたデータがある場合、変数名と一致するテキスト名のリストを作成することは難しくありません。または、文字列置換を実行できるトークンを作成することもできます。変数名を記述子に一致させるCSV(または、より良いのはJSON ;-))を作成するのは難しいことではないと思います。すべての変数に一致する記述子文字列があることを確認し続け、それが完了したら停止します。

5.理想的には、レポートもテンプレート化され(たとえば、「[日付]に[dset]データセットから[var]変数を取得しました。」)、Sweaveにリンクされる可能性があります。

それは他の人の提案roxygenroxygen2適用できるところです。

6.ツールは、過度の負担にならないように十分な柔軟性を備えている必要があります。これは、最小限のドキュメントが単にデータセット名になることを意味します。

うーん、私はここで困惑しています。:)

(*)ちなみに、これに関連するFOSSプロジェクトが1つ必要な場合は、Tavernaをチェックしてください。いくつかの場所で文書化されているように、Rと統合されています。これは現時点ではあなたのニーズにはやり過ぎかもしれませんが、まともな成熟したワークフローシステムの例として調査する価値があります。


注1:私bigmemoryは大規模なデータセットに頻繁に使用するため、各行列の列に名前を付ける必要があります。これらは、各バイナリファイルの記述子ファイルに保存されます。このプロセスにより、変数名(および行列)を記述子に一致させる記述子の作成が促進されます。ランダムアクセスと複数のR/Wアクセスをサポートするデータベースまたはその他の外部ファイル(メモリマップトファイル、HDF5ファイル、.rdatファイル以外)にデータを保存する場合、記述子の追加が第二の性質になる可能性があります。

于 2011-11-08T22:56:25.403 に答える