【问题标题】:Build dataset based on transactions基于交易构建数据集
【发布时间】:2016-04-13 16:11:02
【问题描述】:

当我使用事务活动搜索构建数据集时,我只能找到将数据集解构为事务的留言板,而不是相反。我想做的是创建一个函数来根据当前库存和任何最近的交易活动构建数据集。我曾尝试合并 2 个数据集并使用累积和,但它似乎不起作用。最终,我希望前滚每个项目的数量,然后根据 trans 表中列出的数量进行调整。

trans <- data.frame(day = c(3,3),
                id = c('a','b'),
                qty = c(10,-20))
inventory <- data.frame(day = c(1,1),
                    id = c('a','b'),
                    qty = c(10,20))
##Desired output
output <- data.frame(day = c(1,1,2,2,3),
                 id = c('a','b','a','b','a'),
                 qty = c(10,20,10,20,20))

【问题讨论】:

  • 第 2 天在您的输出中来自哪里?
  • 第 2 天只是第 1 天的结转,因为没有交易。第 3 天是第 2 天的价值加上交易。我在输出中省略了第 3 天的 b,因为它会为零,但一个值也是可行的

标签: r data-manipulation transactional


【解决方案1】:

首先按照你想要的方式创建向量...

ts <- rep(seq(min(inventory$day),max(trans$day)),each = length(unique(inventory$id)))
ids <- rep(inventory$id, length(unique(ts)))
qty <- rep(inventory$qty, length(unique(ts)))
output <- data.frame(day = ts, id = ids)

然后合并交易data.frame并将所有na值设置为0

transM <- merge(trans,output, all.y = T)
transM$qty[is.na(transM$qty)] <- 0

终于得到结果

output$qty <- qty + transM$qty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    相关资源
    最近更新 更多