2016-10-20 7 views
-2

を2つのデータフレームをマージ:私は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")) 

結果は、私はちょうど「列Attribute.xをドロップしなければならないID1 = D2のために有望に見える。しかしID = D1は、私が欲しいものではありません。行5-8はもう新しいテーブルであってはならない。

任意の助け

+0

あなたが何をしようとして明確ではないのgettinからの思考は何ですか。データとdata_newからexpected_outputへのg? – 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

関連する問題