2015-05-04 77 views
3

我期待將來自一個數據幀(A)的數據有選擇地整合到另一個(B)中。條件如下:數據幀共享兩列(miRNA &基因)。數據框A還包含具有該對的值的列。R中的選擇性數據集成

我想創建數據幀B中的新列是從值列採取A和包含一個值,如果對(在一排相同的miRNA基因&)的B.如果對不匹配在B中匹配,用分數創建一個新的行。

#Initialize column in B that will house A value if first two columns match 
B$A_Values <- 0 

If A[,1:2] == B[,1:2]: 
    Change initialized B$A_Value to A[VALUE] of row from A[,1:2] 

If A[,1,2] is not in B[,1:2]: 
    Add row in B[,1:2] 
    Change initialized B$A_Value to A[Value] of row from A[,1:2] 

的dataframes是長度不相等會有B中的項目在未找到,但我想我的初始化將默認值他們0。任何幫助將不勝感激。

乾杯

+0

'合併(A,B,通過= C( 「miRNA」 是, 「Gene」),all.x = TRUE)'? – Khashaa

+0

謝謝Khashaa,這是 –

+0

上的點已經深入的解釋給這裏:http://stackoverflow.com/questions/1299871/how-to-join-data-frames-in-r-inner-outer-left-right –

回答

2

這是merge功能做什麼。

AB <- merge(A, B, by = c("miRNA", "Gene"), all = TRUE) 

或是否有A不在B值和要刪除這些值,使用

AB <- merge(A, B, by = c("miRNA", "Gene"), all.y = TRUE) 
+0

現貨,這解決了這個問題,並回答了後續問題。似乎在初始化列之前將不起作用。它將簡單地創建另一列,並添加爲NAs。謝謝!! –