R中的观测值配对

时间:2019-07-12 17:45:58

标签: r dataframe duplicates

让我们获取以下示例数据集:

counterparty1 <- c("A","B","B","B","B")
counterparty2 <- c("B","C","A","A","C")
counterparty1_side <- c("buy","sell","buy","sell","sell")
price <- c(1.2,3.7,2.5,1.2,3.7)
sample.data <- data.frame(counterparty1,counterparty2,counterparty1_side,price)

第1行和第4行实际上给出了相同的观察结果-唯一的问题是,第1行说“ A”购买资产(暗指“ B”出售),而在第4行说“ B”出售资产(暗含) (“ A”购买)。

我想用代码创建以下数据集:

counterparty1 <- c("A","B","B","B","B")
counterparty2 <- c("B","C","A","A","C")
counterparty1_side <- c("buy","sell","buy","sell","sell")
price <- c(1.2,3.7,2.5,1.2,3.7)
transaction_number <- c(1,2,3,1,4)
duplicate <- c(1,0,0,1,0)
clean.data <- data.frame(counterparty1,counterparty2,counterparty1_side,price,transaction_number,duplicate)

实际上,我的数据集要大得多,所以我不能硬编码。

更新:我添加了第5行,与第2行相同,包括对方1和2的顺序相同。我希望“ duplicate”变量仅将第1行和第4行标记为重复(因为它们是相反的),而不是第2行和第5行。

1 个答案:

答案 0 :(得分:5)

更新的答案:

解决了OP的后续问题,指出如果同一笔交易发生两次,则不应将其视为重复交易。(例如,乙方将商品出售给丙方两次 $ 3.7K );阅读评论和更新的问题。

Wrapper

原始答案:

考虑欺诈(无论是因为对方角色已更改还是他们是实际的欺诈而被骗)(查看问题的编辑以查看问题的第一个版本)。

class Wrapper {
   public:
    Value& val;

    // copy constructor automatically generated
};