【问题标题】:pulling type of transaction out of transaction log从事务日志中提取事务类型
【发布时间】:2017-03-10 11:43:11
【问题描述】:

我有一个问题,数据来自相关数据库,但没有内置识别交易类型(A-only、B-only 或 A&B)的功能。

我在 R 中以不相关的结构工作。 交易日志是一个带有文章的日志(有 Maingroups),还有一行用于支付类型(留空)。根据主组,它是 A 或 B 观察。

我已经编写了一小部分代码来检查。我的问题是我想摆脱这个告诉我的集合:

  • 事务 1 仅限 A
  • 事务 2 仅限 B
  • 事务 3 是 A&B
  • 事务 4 是 A&B

我必须在包含大约 1600 万个观测值的数据集上执行此操作。

trans.log <- c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4)
trans.log <- as.data.frame(trans.log)
trans.log$Maingroup <-c(1,1, "", 2, 4, "", 3, 1, 4, "", 1, 2, "")
trans.log[(trans.log$Maingroup %in% 1), "AorB"] <- "A"
trans.log[(trans.log$Maingroup %in% 2), "AorB"] <- "B"
trans.log[(trans.log$Maingroup %in% 3), "AorB"] <- "B"
trans.log[(trans.log$Maingroup %in% 4), "AorB"] <- "B"
trans.log[(trans.log$Maingroup %in% 6), "AorB"] <- "B"
trans.log[(trans.log$Maingroup %in% 7), "AorB"] <- "B"

【问题讨论】:

    标签: r function loops dataframe bigdata


    【解决方案1】:

    昨晚之后,我找到了自己的遮阳篷。

    trans.log1 <- trans.log %>% group_by(JournalHeaderId, AorB)
    %>% summarise(aantal=n())
    
    # nieuwe kolommen maken voor  de aantallen A / B per transactie
    trans.log2 <- trans.log1 %>% spread(AorB, value = aantal)
    
    # nieuwe kolommen maken voor als B is NA of F is NA 
    trans.log3 <- trans.log2 %>% mutate(Bonly=(B>= 1 & is.na(A)),
                        Aonly=(A>=1 & is.na(B)), AB=(B>=1 & A>=1), 
                        NonX=(NX>=1), other = (is.na(B) & is.na(A) & is.na(NX)))
    

    【讨论】:

      猜你喜欢
      • 2022-04-30
      • 2010-11-07
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多