データを再構築/再構築する最良の方法は何ですか?


12

私は研究室(ボランティア)の研究助手です。私と小さなグループは、大規模な研究から引き出された一連のデータのデータ分析を担当しています。残念なことに、データはある種のオンラインアプリで収集されており、最も使いやすい形式でデータを出力するようにプログラムされていませんでした。

以下の図は、基本的な問題を示しています。これは「リシェイプ」または「リストラクチャリング」と呼ばれると言われました。

質問:1万件以上のエントリがある大規模なデータセットを使用して、写真1から写真2に移動するための最良のプロセスは何ですか?

これはサンプルであり、実際のファイルには1万個以上のエントリがあります。 わかりやすくするために色分けしました

これをすべてに変換する必要があります。


1
これを2つの別々の質問に分けて、サンプルデータを提供してください(関連性がない限り、背景を省略することもできます)。大まかに、(1)でマッピングを見つけてから、マージして番号を付加します。(2)実行する操作の種類に大きく依存します。事のこのタイプの人気のRパッケージには含まれdata.tabledplyrplyr、とreshape2-私は、可能な場合はExcelとピボットテーブルを避けることをお勧めします。
マックスゲニス14年

データクリーニングの問題は、あなたが尋ねる一般的な質問の種類でカバーできる範囲よりも広範囲に及ぶと思います。OpenRefine.orgをご覧ください。分析のこの部分では、いくつかのビデオとダウンロードが役立ちます。
ジョン14年

3
この質問は、統計ではなく基本的なデータクリーニングと組織に関するものであるため、トピック外のようです。
ニックスタウナー14年

2
プロセスのように「初歩的な」データをクリーニングすることは、それを使用するために不可欠であるため、トピックから外れていないと思います。これはより大きな問題の一部です。
シャドウトーカー14年

2
@ NickStauner、IIRCトピック外ではなく、「不明/詳細が必要」として閉会することに投票しました。データクリーニングは統計の範囲内にあるように思えますが、良い人は同意できないと思いますが、そのような質問は話題になり得ると思います。我々が持っていることを考慮してデータクリーニングタグを、&これらのCVスレッド:123、および4
GUNG -復活モニカ

回答:


12

私のコメントで述べたように、実際の答えを定式化するための質問には十分な詳細がありません。適切な用語を見つけて質問を定式化することさえ助けが必要なので、一般論で簡単に話すことができます。

あなたが探している用語は、データのクリーニングです。これは、未加工のフォーマットが不十分な(ダーティな)データを取得し、分析のために形にするプロセスです。フォーマットの変更と正則化(「2」2)および行と列の再編成は、一般的なデータクリーニングタスクです。

ある意味では、データクリーニングは任意のソフトウェアで実行でき、ExcelまたはRを使用して実行できます。両方の選択には長所と短所があります。

  • Excel: Excelは、ほぼ確実にデータクリーニングの最も一般的な選択肢です(R fortunes#59 pdfを参照)。また、統計学者からは不適切な選択と見なされています。主な理由は、すべてをキャッチしたこと、またはすべてを同じように処理したこと、および行った変更の記録がないことを確認することが難しいため、それらの変更を後で再確認できないことです。Excelを使用する利点は、何をしているかを確認しやすくなり、変更を行うために多くを知る必要がないことです。(統計学者は後者を追加の欠点と見なします。)
  • R: Rには急な学習曲線が必要です。Rやプログラミングにあまり慣れていない場合、Excelで非常に迅速かつ簡単にできることは、Rで試行するのがいらいらするでしょう。よく過ごした時間。さらに、Rのデータをクリーニングするためのコードを作成して保存する機能により、上記の短所が軽減されます。以下は、Rでこれらのタスクを開始するのに役立ついくつかのリンクです。

    Stack Overflowで多くの良い情報を得ることができます:

    Quick-Rも貴重なリソースです。

    数値を数値モードにする:

    Rについて学ぶためのもう1つの貴重な情報源は、UCLAの統計ヘルプWebサイトです。

    最後に、古き良きGoogleで多くの情報をいつでも見つけることができます。

    • この検索:rでのデータクリーニングでは、多くのチュートリアルが表示されます(FTRを使用したことはありません)。

更新:これは、「研究単位」(あなたの場合は人)ごとに複数の測定値がある場合のデータセットの構造に関する一般的な問題です。すべての人に1つの行がある場合、データは「ワイド」形式であると言われますが、たとえば、応答変数には必ず複数の列が必要になります。一方、応答変数用の列を1つだけ持つことができます(ただし、結果として人ごとに複数の行があります)。その場合、データは「長い」形式であると言われます。これらの2つの形式の間を移動することは、特にRの世界では、データの「形状変更」と呼ばれます。

  • このための標準R関数は?reshapeです。使用するためのガイドがありますreshape()UCLAの統計ヘルプWebサイトでます。
  • 多くの人reshapeは仕事が難しいと考えています。 Hadley Wickhamは、プロセスを簡素化することを目的としたreshape2と呼ばれるパッケージを提供しました。reshape2のHadleyの個人Webサイトはこちら、Quick-Rの概要はこちら、そして見栄えの良いチュートリアルはこちらです。
  • SOには、データの再構成方法について非常に多くの質問があります。それらのほとんどは、一般的にデータアナリストが直面しているものであるため、ワイドからロングに移行することです。あなたの質問は長いものから広いものへと進むことです。これはあまり一般的ではありませんが、それについてはまだ多くのスレッドがありますこの検索でそれらを調べることができます。
  • Excelでこれを実行しようとする場合は、Excel用のVBAマクロを記述して、ここで形状変更機能を複製するスレッドがあります

2
この質問とこの答えは、ほぼすべての種類の研究でプログラミングリテラシーがますます必要になっている理由を示しています。この質問に対するより完全な回答を書いて、ブログにも投稿しますが、忘れる前にこのコメントを取得したかったです。
シャドウトーカー14年

2
ある程度は同意しますが、「必要」および「あらゆる種類の研究」は少し先に進んでいます。多くの分野ではダーティデータを扱うことはあまりなく、多くの主要な研究者がプログラミング言語に触れる必要はありません。
Behacad 14年

わあ、ありがとう。私にとって非常に新しいこの情報をすべて処理して統合するには少し時間がかかります。ちょっとしたメタ接線が私の質問に拍車をかけたようです...言語/文化の知識がなくても自分が外国の土地に落ちたと想像してください。これは私と統計です。回答に時間を割いてくださったことに感謝しています。
ウィルコエ14年

最初の質問を明確にするために編集を追加しましたが、質問は閉じているようです。
ウィルコエ14年

質問は閉じられており、@ user48538です。残念ながら、このバージョンは以前のものよりも明らかにオフトピックです。1万行ある場合は、Excelでこれを実行しようとは思わないでしょう。あなたは本当にRまたは同様のプログラミングソフトウェアを使用する必要があります。特定の操作の名前は、データセットを「long」から「wide」に変更することです。リンクをいくつか追加します。さらに、あなたが学部のボランティアであり、統計やプログラミングのバックグラウンドがほとんどない場合、このタスクをあなたに割り当てるのは誰でも、私見では非常に無責任でした。これがあなたの仕事であるべき方法はありません。
GUNG -復活モニカ

0

Rを使用して以下を試してください。

> ddf
   sess_id user_id     quest  response
1        1       a       age        29
2        1       a satisfied  st_agree
3        1       a    gender      male
4        1       a     phone    iphone
5        2       a       age        29
6        2       a satisfied not_agree
7        2       a    gender    female
8        2       a     phone    iphone
9        3       b       age        29
10       3       b satisfied     agree
11       3       b    gender      male
12       3       b     phone   android
> 
> library(reshape2)
> dcast(ddf, sess_id+user_id ~ quest, value.var='response')
  sess_id user_id age gender   phone satisfied
1       1       a  29   male  iphone  st_agree
2       2       a  29 female  iphone not_agree
3       3       b  29   male android     agree

0

scalaでは、これは「分解」操作と呼ばれ、dataFrameで実行できます。データがrddの場合、最初にtoDFコマンドでdataFrameに変換してから、.explodeメソッドを使用します。

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