2017-03-10 5 views
0

問題がありますが、データは関連データベースからのものですが、トランザクションタイプ(A-only、B-onlyまたはA & B)を認識する機能は組み込まれていませんトランザクションタイプをトランザクションログから取り出す

私はRに関連しない構造で取り組んでいます。 トランザクションログは記事(Maingroupsを含む)を持つログで、支払いタイプの行(空白のまま)があります。 Maingroupに応じて、それはAまたはBの観察である。

私は、チェックアウトのための小さなコードを書いています。私の質問私はこのうち私に語ったセットを取得したい:

  • トランザクション1が専用
  • トランザクション2がB-のみ
  • トランザクション3は、& B
  • トランザクション4であるですA &B

私は約1,600万件の観測データセットでこれを行う必要があります。

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" 

答えて

0

昨晩、私は自分自身を見つけました。

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))) 
関連する問題