合并r中的两个数据帧(更新和删除值)

时间:2016-10-20 06:59:34

标签: r dataframe merge

我有两个数据框:

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行不应该在新的桌子了。

任何帮助?

1 个答案:

答案 0 :(得分:0)

我认为您可以尝试以下方法:

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