26

私はデータ分析に R を使用しており、非常に満足しています。ただし、データのクリーニングは少し簡単になる可能性があります。この仕事に適した別の言語を学ぶことを考えています。具体的には、生データを取得し、不要な変数や観察結果を削除し、R に簡単にロードできるようにフォーマットするために使用するツールを探しています。コンテンツは、複数行のテキストではなく、ほとんどが数値および文字列データになります。

Python と awk/sed の組み合わせを検討しています。(Perl も別の選択肢になることは承知していますが、別の完全な言語を学ぶつもりなら、Python の方が優れていて、より拡張性の高い選択肢のようです。)

sed/awk の利点は、習得が早いことです。欠点は、この組み合わせは Python ほど拡張性がないことです。確かに、Python を学べば「ミッション クリープ」を想像するかもしれませんが、それは問題ありませんが、私の目標ではありません。

私が考えていたもう 1 つの考慮事項は、大規模なデータ セットへの適用です。私が理解しているように、awk/sed は行単位で動作しますが、Python は通常、すべてのデータをメモリに取り込みます。これは、sed/awk のもう 1 つの利点となる可能性があります。

私が見逃している他の問題はありますか?アドバイスをいただければ幸いです。(R ユーザーがクリーニングの推奨事項を提供できるように、R タグを含めました。)

4

6 に答える 6

15

あなたの冒険を台無しにするつもりはありませんが、私は断りません。理由は次のとおりです。

  • R は、sed/awk がベクトル化されていない場所でベクトル化されます
  • R にはすでに Perl 正規表現と拡張正規表現の両方があります
  • R は、必要に応じて、統計ルーチン (代入など) をより簡単に利用できます。
  • R は視覚化、要約、...

そして最も重要なことは、あなたはすでに R を知っているということです。

そうは言っても、もちろん sed/awk は小さなプログラムやワンライナーにも最適であり、Python は優れた言語です。しかし、私はRにも固執することを検討します.

于 2011-09-20T03:33:48.700 に答える
10

私は定期的に Python と Perl を使用しています。私は sed をかなりよく知っており、かつて awk をよく使用していました。私はRをフィットアンドスパートで使用しました。Perl は、データ変換機能と速度の面で最高です。

  • Perl は基本的に sed と awk が実行できるすべてのことを実行できますが、さらに多くのことも実行できます。(実際、perl に付属している a2p と s2p は、awk と sed スクリプトを Perl に変換します。)
  • Perl は、ほとんどの Linux/Unix システムに含まれています。そうでない場合は、sed と awk を学ぶ十分な理由がありました。その理由はずっと死んでいます。
  • Perl には、awk や sed から得られるよりもはるかに多くの機能を提供するモジュールの豊富なセットがあります。たとえば、これらのモジュールは、DNA 配列の逆補完、統計の計算、CSV ファイルの解析、または MD5 の計算を行うワンライナーを有効にします。(パッケージについてはhttp://cpan.org/を参照してください)
  • Perl は基本的に sed や awk と同じくらい簡潔です。私のような人 (そしておそらくあなたも) にとって、コマンド ラインでデータをすばやく変換できることは大きなメリットです。Python は冗長すぎて、コマンド ラインを効率的に使用できません。

正直なところ、Perl で sed と awk を学習する理由を考えると途方にくれます。

念のため言っておきますが、私は「Perl のやつ」ではありません。宗教としてではなく、スイスアーミーナイフとして好きです。

于 2011-09-20T04:15:51.463 に答える
6

comm、tr、sort、cut、join、grep、およびループなどの組み込みシェル機能など、UNIX に似たプラットフォームで使用できる他の豊富なコマンド ライン ツールと共に sed/awk をお勧めします。R は他の一般的なスクリプト言語よりも優れているとは言えませんが、データ操作を処理できるため、別のプログラミング言語を学ぶ必要はありません。

于 2011-09-20T15:56:55.980 に答える
3

短期的なsed/awkソリューションではなく、python、perl、rubyなどのデータファイルを処理するための適切な言語で長期的に投資することをお勧めします。すべてのデータアナリストには少なくとも3つの言語が必要だと思います。大量の計算にはCを使用し、データファイルの処理にはperlを使用し、インタラクティブな分析とグラフィックスにはRを使用します。

Pythonが普及する前にperlを学びました。私はルビーについて素晴らしいことを聞いたので、代わりにそれを試してみたくなるかもしれません。

これらのいずれについても、ファイルを1行ずつ操作できます。Pythonは、事前にファイル全体を読み取る必要はありません。

于 2011-09-20T03:42:12.953 に答える
1

このタイプの処理には「awk」をお勧めします。

おそらく、単純なテキストファイルで無効な観測を検索/拒否しているだけです。

awk は、このタスクを非常に高速に処理し、プログラミングも非常に簡単です。

もっと複雑なことをする必要がある場合は、できます。

パフォーマンスへの影響が気にならない場合は、Python も使用できます。「rpy」ライブラリを使用して、python と R コンポーネントを緊密に統合できます。

于 2011-09-20T03:53:21.190 に答える
1

私はダークに同意します。私も同じことを考えて、他の言語も少し使いました。しかし、最終的には、より経験豊富なユーザーが R を使用して行うことに再び驚きました。パッケージが好きddplyか、またはplyrあなたにとって非常に興味深いかもしれません。そうは言っても、SQLはデータのジャグリングを頻繁に助けてくれました

于 2011-09-20T11:16:26.797 に答える