最初の非公式投稿にはお詫び申し上げます。私はそれを修正したので、今理解しやすいと思う。5つの異なるメジャー列を使用して、長い形式から広い形式にデータを変換する
私は長いフォーマットから広いフォーマットへといくつかの大きなデータセットを作り直して、共通の識別子を使ってそれらを一緒にマージしようとしていました。
データは漁業データです。現在、私はターゲットキャッチデータを長いものから広いものに変換し、各行が1つの 'TripSet'値としてデータセット全体の共通識別子であるようにフォーマットされたデータセットに追加する必要があります。
次のように私は広いに長いから変換する必要があるデータセットの形式は次のとおりです。
my.df <- data.frame(Trip=rep(c("A","B","C"), 5), Set=rep(1:5, each=3), CommonName=rep
(c("i","j","k"),5),TotCat=1:15, Kept=16:30, RtnAlive=31:45, RtnDead= 46:60, RtnUnk= 61:75)
my.df$TripSet <- paste(my.df$Trip,my.df$Set)
my.df
Trip Set CommonName TotCat Kept RtnAlive RtnDead RtnUnk TripSet
1 A 1 i 1 16 31 46 61 A 1
2 B 1 j 2 17 32 47 62 B 1
3 C 1 k 3 18 33 48 63 C 1
4 A 2 i 4 19 34 49 64 A 2
5 B 2 j 5 20 35 50 65 B 2
6 C 2 k 6 21 36 51 66 C 2
7 A 3 i 7 22 37 52 67 A 3
8 B 3 j 8 23 38 53 68 B 3
9 C 3 k 9 24 39 54 69 C 3
10 A 4 i 10 25 40 55 70 A 4
11 B 4 j 11 26 41 56 71 B 4
12 C 4 k 12 27 42 57 72 C 4
13 A 5 i 13 28 43 58 73 A 5
14 B 5 j 14 29 44 59 74 B 5
15 C 5 k 15 30 45 60 75 C 5
次のように私は1つの変数で広いに長いから変換するには、キャストやdcastを使用することができます。
しかし、ここでゼロよりも多くのNA値を取得する必要があるかどうかはわかりません。
私の希望するデータフォーマットは共通識別子 'TripSet by row'を持ち、コモンネームでそれぞれの種が 'TotCat'、 'Kept'、 'RtnAlive'、 'RtnDead'、 'RtnUnk'と一致しています。
私は次のようにデータを作り直すその後、溶融試してみました:
dcast(melt(my.df, id.vars=c("TripSet", "CommonName")), TripSet~variable+CommonName)
TripSet Trip_i Trip_j Trip_k Set_i Set_j Set_k TotCat_i TotCat_j TotCat_k Kept_i Kept_j Kept_k RtnAlive_i RtnAlive_j RtnAlive_k RtnDead_i
1 A 1 A <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
2 A 2 A <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
3 A 3 A <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
4 A 4 A <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
5 A 5 A <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
6 B 1 <NA> B <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
7 B 2 <NA> B <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
8 B 3 <NA> B <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
9 B 4 <NA> B <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
10 B 5 <NA> B <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
11 C 1 <NA> <NA> C <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
12 C 2 <NA> <NA> C <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
13 C 3 <NA> <NA> C <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
14 C 4 <NA> <NA> C <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
15 C 5 <NA> <NA> C <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
これは、基本的に私の予想出力されますが、私は「トリップ」をキャストしたいと「SET」(と私が持っている他のいくつかの列変数はありません追加のメジャー変数として 'Kept'、 'RtnAlive'、 'RtnDead'、 'RtnUnk'のみを取り、列名には選択したメジャー変数名とCommonNameの両方を反映させます。
脇に、データがないのでNA値が生成されるため、たとえば、共通名i種が保持されなかったか、またはx個のセットにrtndeadが残っていませんか?
これで任意の助けいただければ幸いです。
あなたの問題を説明するために、私たちがあなたの問題を解決するための再現可能な例を提供してください。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –
期待される出力も追加してください。 – Sotos
はい - NAsは欠けている組み合わせですが、私の結果は異なります - 下の私の答えを見てください。 – epi99