2016-10-20 68 views
-2

我有兩個數據幀中的兩個數據幀(更新和刪除值):合併r中

data <- data.frame(ID1 = c("D1","D1","D1","D1","D2","D2"), 
       ID3 = c("A","A","D","D","B","C"), 
       Attribute = c("KL","KM","KL","KM","AB","AB"), 
       Value = c(2,2,3,3,5,7)) 


data_new <- data.frame(ID1 = c("D1","D1","D2","D2"), 
       ID2 = c("D1-1","D1-1","D2-1","D2-1"), 
       Attribute = c("KL","TA","AB","AA")) 

現在我想從合併數據ValuesID3在我的新的數據幀。另外,我想刪除一些屬性並添加新的屬性。輸出應該看起來如下:

expected_output <- data.frame(ID1 = c("D1","D1","D1","D1","D2","D2","D2","D2"), 
          ID2 = c("D1-1","D1-1","D1-1","D1-1","D2-1","D2-1","D2-1","D2-1"), 
          ID3 = c("A","A","D","D","B","B","C","C"), 
          Attribute = c("KL","TA","KL","TA","AB","AA","AB","AA"), 
          Value = c(2,2,3,3,5,5,7,7)) 

任何人都可以幫助我嗎?

我到目前爲止嘗試的是一個簡單的合併。

mergeddata <- merge(data_new,data, 
       by.x = c("ID1"), 
       by.y = c("ID1")) 

結果看起來很有希望爲ID1 = D2我只需要刪除列Attribute.x。」不過ID = D1是不是我想要的。行5-8不應該在新表了。

任何幫助

+0

目前尚不清楚你想要做什麼是剛開的思考g從data和data_new到expected_output? – user1945827

+0

假設ID1是基金(ID3)中的一種證券,其中一些屬性附屬於證券(ID1)和每個基金的價值(頭寸)。現在,安全性的屬性發生了變化(data_new),並根據ID1獲得新的ID(ID2)。目標是用新屬性更新數據,但保留位置和值。這更清楚嗎? – Walde

回答

0

我想你可以嘗試以下方法:?

mergeddata <- merge(data_new ,unique(data[, c("ID1", "ID3", "Value")]), by = "ID1") 
+1

這看起來很有前途的謝謝 – Walde