簡潔にするために、私は、政府から援助を受けた組織をリストする、国レベルのデータセットを持っているとしましょう。その金額はどれくらいで、プロジェクトのタイプ。データフレームには毎年10団体の「スペース」がありますが、すべての政府が毎年多くの組織に補助金を出しているわけではないので、空白がたくさんあります。さらに、彼らはどんな順序にも従わない:1つの組織は1年目に、次の年は2番目の場所にコード化することができる。データは次のようになります。モナディックからダイアディックまでのデータをR
> State Year Org1 Aid1 Proj1 Org2 Aid2 Proj2 Org3 Aid3 Proj3 Org4 Aid4 Proj4 ...
Italy 2000 A 1000 Arts B 500 Arts C 300 Social
Italy 2001 B 700 Social A 1000 Envir
Italy 2002 A 1000 Arts C 300 Envir
UK 2000
UK 2001 Z 2000 Social
UK 2002 Z 2000 Social
...
私はこのようになり進データ、にこれを変換しようとしている:私はRを使用してい
> State Org Year Aid Proj
Italy A 2000 1000 Arts
Italy A 2001 1000 Envir
Italy A 2002 1000 Arts
Italy B 2000 500 Arts
Italy B 2001 700 Social
Italy C 2000 300 Social
Italy C 2002 300 Envir
UK Z 2001 2000 Social
...
、そして最良の方法は私が見つけることができますexpand.grid(unique(State), unique(Org))
のようなものを使用して定義済みの可能なダイアドセットを作成してから、データをループして、対応する列を見つけてデータフレームを埋めていました。しかし、私はこれが最も効果的な方法ではないので、よりよい方法があるかどうか疑問に思っていました。私はdplyr
またはreshape
と考えましたが、解決策を見つけることができません。
これは定期的な質問ですが、本当に答えは見つかりませんでした。最も似た質問はthis oneですが、まったく同じではありません。
ありがとうございます。
いくつかの使用可能なデータを提供すると便利です(例えば、 'dput'など)。 – Haboryme
このブログ記事は、このテーマをカバーするうえで非常にうまくいきます。http://www.milanor.net/blog/reshape-data-r-tidyr-vs-reshape2/ –
実際、これは重複している可能性があることに気付きました。http: //stackoverflow.com/a/25932131/2416535 – jakub