我已經花了這一天的更好的一部分,但我一直在卡住。這不會花費我很長時間在Excel中使用索引匹配匹配,但我對R更新,並且合併數據似乎並不直截了當。我搜索了該網站,發現了類似的問題,但沒有針對此類問題的解決方案。在R中部分覆蓋合併兩個不同尺寸的數據幀
我有兩個數據幀。它們在兩個維度上都有不同的長度。 a
是4x4,而b
是3x3。部分重疊:
a <- data.frame("ID" = c(1:4), "A" = c(21:24), "B" = c(31:34), "C" = c(41:44))
a
ID A B C
1 1 21 31 41
2 2 22 32 42
3 3 23 33 43
4 4 24 34 44
和
b <- data.frame("ID" = c(4:6), "C" = c(22:24), "D" = c(32:34))
b
ID C D
1 4 22 32
2 5 23 33
3 6 24 34
我合併的 「ID」 號碼。我的目標是讓他們看起來像
c <- data.frame("ID" = c(1:6), "A" = c(21:24, NA, NA), "B" = c(31:34, NA, NA), "C" = c(41:43,22:24), "D" = c(NA, NA, NA, 32:34))
c
ID A B C D
1 21 31 41 NA
2 22 32 42 NA
3 23 33 43 NA
4 24 34 22 32
5 NA NA 23 33
6 NA NA 24 34
正如你所看到的,最終的數據幀合併這兩個並分配娜缺少的信息。在「C」欄中,我想b
覆蓋a
它有數字值。在這個例子中,在c[4,3]
值應該改變從44至22
大多數這是很簡單的。但讓列「C」正確是一場噩夢。我做了簡單的事情第一:
merge(a, b, by = "ID", all = T)
它幾乎是卓有成效的,但與重複行個「C」結束:
ID A B C.x C.y D
1 1 21 31 41 NA NA
2 2 22 32 42 NA NA
3 3 23 33 43 NA NA
4 4 24 34 44 22 32
5 5 NA NA NA 23 33
6 6 NA NA NA 24 34
這不會是如此糟糕,如果我能找出如何正確合併重複的行,因爲這樣我可以只運行
merge(a[-4], b[-2], by = "ID", all = T)
ID A B D
1 1 21 31 NA
2 2 22 32 NA
3 3 23 33 NA
4 4 24 34 32
5 5 NA NA 33
6 6 NA NA 34
到別的合併的一切,那麼在事後合併的「C」帶來的。
但我無法弄清楚如何處理這部分內容:
merge(a[c(1,4)], b[c(1,2)], by = "ID", all = T)
ID C.x C.y ID C
1 1 41 NA 1 1 41
2 2 42 NA 2 2 42
3 3 43 NA -> 3 3 43
4 4 44 22 4 4 22
5 5 NA 23 5 5 23
6 6 NA 24 6 6 24
有一定有辦法。
感謝您的幫助!
順便說一句,以上的數據幀是例子,你可能會意識到。我試圖合併的實際數據框大致爲2000x100和200x20,因此手動更改單個元素將無濟於事。 – trijamms