對於第一個不起眼的帖子道歉,這是我第一次在這裏。我修改了它,我希望現在更容易理解。將數據從長格式轉換爲具有五個不同度量列的寬格式
我一直在嘗試從長到寬的格式重塑幾個大型數據集,然後使用通用標識符將它們合併在一起。
該數據是漁業數據。目前,我需要將目標捕獲數據從long轉換爲wide,並追加到已格式化的數據集,以將每行作爲單個「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
我可以用鑄造或dcast從長到寬轉換一個變量,如下所示:
但是我不確定是否應該在這裏獲得如此多的NA值而不是零值。
我想要的數據格式是具有通用標識符'TripSet by row,然後在列中每個物種的通用名稱與'TotCat','保留','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>
這主要是我的期望輸出,但我不希望投「跳閘」和「設置」(和其他幾個列變量我有在實際數據集中),而只是將'保留','RtnAlive','RtnDead','RtnUnk'作爲附加度量變量,並且列名反映所選度量變量名稱和CommonName。
另外,NA值是在沒有數據的情況下產生的,例如,沒有共同名稱i物種被保留或在x數組上沒有保留?
任何幫助,這將不勝感激。
請提供一個可重現的例子來說明您的問題並幫助我們解決您的問題。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –
也添加您的預期輸出。 – Sotos
是的 - 新生對於缺失的組合,但我的結果不同 - 請參閱下面的答案。 – epi99