2011-01-27 111 views
3

我有一個關於合併兩個不等長數據集的非常基本的問題。一個是標準的面板按年在R中合併不同長度的數據集

ID Time 
1 1  
1 2 
1 3 
2 1 
2 2 
2 3 

第二組有不同的長度,看起來像這樣

ID Time X 
1 2 2 
2 1 3 
2 3 4 

我如何通過ID和時間結合這兩種,使

ID Time X 
1 1 NA 
1 2 2 
1 3 NA 
2 1 3 
2 2 NA 
2 3 4 

回答

10

嗨,也許你應該看看合併函數中的all.x或all.y選項。

Data1 <- data.frame(ID = rep(c(1,2), each = 3), 
        Time = rep(c(1, 2, 3), 2)) 
Data2 <- data.frame(ID = c(1, 2, 2), 
        Time = c(2, 1, 3), 
        X = c(2, 3, 4)) 
merge(Data2, Data1, all.y = TRUE) 
    ID Time X 
1 1 1 NA 
2 1 2 2 
3 1 3 NA 
4 2 1 3 
5 2 2 NA 
6 2 3 4 

或使用plyr功能加入其合併相比速度更快,但缺少一些選項:

join(Data2, Data1, type = "full") 
Joining by: ID, Time 
    ID Time X 
1 1 2 2 
2 2 1 3 
3 2 3 4 
4 1 1 NA 
5 1 3 NA 
6 2 2 NA 
+0

的加入功能的伎倆。謝謝。 – CGN 2011-01-28 16:00:43