【问题标题】:Merge two data frames in r (updating and dropping values)合并 r 中的两个数据帧(更新和删除值)
【发布时间】:2016-10-20 06:59:33
【问题描述】:

我有两个数据框:

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 行不应再出现在新表中。

有什么帮助吗?

【问题讨论】:

  • 不清楚您要做什么。从data和data_new到expected_output的思路是什么?
  • 假设 ID1 是基金 (ID3) 中的一种证券,该证券 (ID1) 具有一些属性,每个基金都有一个价值(头寸)。现在证券的属性发生了变化 (data_new) 并且他们获得了一个基于 ID1 的新 ID (ID2)。目标是使用新属性更新数据,但保留位置和值。是不是更清楚了?

标签: r dataframe merge


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2017-02-23
    相关资源
    最近更新 更多