代碼來獲取數據幀:合併缺失值的數據幀中的R
rat_all = structure(list(frequency = c(37L, 31L, 14L, 11L, 2L, 3L), isoforms = 8:13,
type = structure(c("rat_all", "rat_all", "rat_all", "rat_all",
"rat_all", "rat_all"), .Dim = c(6L, 1L))), .Names = c("frequency",
"isoforms", "type"), row.names = 8:13, class = "data.frame")
rat_ensembl = structure(list(frequency = c(17L, 8L, 20L), isoforms = 8:10,
type = structure(c("rat_ensembl", "rat_ensembl", "rat_ensembl"
), .Dim = c(3L, 1L))), .Names = c("frequency", "isoforms",
"type"), row.names = 8:10, class = "data.frame")
我有兩個數據幀:
frequency isoforms type
8 17 8 rat_ensembl
9 8 9 rat_ensembl
10 20 10 rat_ensembl
和
frequency isoforms type
8 37 8 rat_all
9 31 9 rat_all
10 14 10 rat_all
11 11 11 rat_all
12 2 12 rat_all
13 3 13 rat_all
我想將這些組合成一個數據框,但也包括缺少的 isoforms
條目在rat_all
數據幀中,但不是rat_ensembl
數據幀。所以我想輸出是因爲如果我rbinded 兩個數據幀組合數據幀,但增強:
11 0 11 rat_ensembl
12 0 12 rat_ensembl
13 0 13 rat_ensembl
我想我可以合併做,但我風得到一個巨大的混亂我不得不放鬆一下,我最終可以按照正確的格式進行按摩,但如果我想一次爲四到五種不同的「類型」做這個,那麼這不是一個好的解決方案。我錯過了什麼?謝謝!
要清楚,我希望得到一個看起來像最後的數據幀:
frequency isoforms type
1 17 8 rat_ensembl
2 8 9 rat_ensembl
3 20 10 rat_ensembl
4 37 8 rat_all
5 31 9 rat_all
6 14 10 rat_all
7 11 11 rat_all
8 2 12 rat_all
9 3 13 rat_all
10 0 11 rat_ensembl
11 0 12 rat_ensembl
12 0 13 rat_ensembl
我可以種得到它做我想做的,如果我使用:
z = merge(rat_ensembl, rat_all, by.x="isoforms", by.y="isoforms", all.y=TRUE)
isoforms frequency.x type.x frequency.y type.y
7 7 44 rat_ensembl 69 rat_all
8 8 17 rat_ensembl 37 rat_all
9 9 8 rat_ensembl 31 rat_all
10 10 20 rat_ensembl 14 rat_all
11 11 NA <NA> 11 rat_all
12 12 NA <NA> 2 rat_all
13 13 NA <NA> 3 rat_all
14 14 NA <NA> 1 rat_all
然後,理論上我可以選擇isoforms
,frequency.x
,type.x
列和 修復它們,使它們對於rat_ensembl
和rat_all
中的每一個都是正確的,然後是那些 數據幀在一起,但似乎應該有一些東西來直接處理它。
你有什麼合併嘗試?您想要合併的常用列是什麼?頻率,亞型,類型?上述所有的?一旦確定了公共列,那麼通過指定「全部」參數來指定是否需要內部連接,左連接,右連接或外連接。另外,您是否可以使用代碼片段更新您的問題,以便人員可以將其粘貼到其R會話中?使用'dput()'並將內容粘貼到你的問題中。 – Chase 2011-05-03 15:37:34
謝謝你的建議,這是非常有幫助的。我在帖子中增加了額外的信息。 – rory 2011-05-03 16:11:11