2017-03-10 4 views
0

Ich habe ein Problem, die Daten stammen aus einer verwandten Datenbank, aber die Funktion zur Erkennung der Art der Transaktion (A-only, B-only oder A & B) wurde nicht eingebautziehen Art der Transaktion aus dem Transaktionsprotokoll

Ich arbeite in R in einer nicht verwandten Struktur. Das Transaktionsprotokoll ist ein Protokoll mit Artikeln (die Maingroups enthalten) und außerdem gibt es eine Zeile für den Zahlungstyp (leer gelassen). Je nach Maingroup handelt es sich um eine A- oder B-Beobachtung.

Ich habe einen kleinen Teil des Codes geschrieben, um zu überprüfen. Meine Frage Ich möchte aus diesem einen Satz erhalten, die mir sagt:

  • Transaktion 1 A-only
  • Transaktion 2 B-only
  • Transaktion 3 A & B
  • Transaktion 4 ist A & B

Ich muss dies auf einem Datensatz von etwa 16 Millionen Beobachtungen tun.

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" 

Antwort

0

Nach der letzten Nacht habe ich meine eigene Awnser gefunden.

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))) 
Verwandte Themen