Gibt es eine effizientere Abfrage als die folgendeneffiziente Nutzung von R data.table und einzigartig()
DT[, list(length(unique(OrderNo))),customerID]
eine LONG-Format Tabelle mit Kunden-IDs, Bestellnummer und Produktpositionen zu verfeinern, was bedeutet, dass es Es handelt sich um doppelte Zeilen mit derselben Auftrags-ID, wenn ein Kunde mehr als einen Artikel in dieser Transaktion gekauft hat.
Versuch, einzigartige Einkäufe zu erarbeiten. length()
zählt alle Bestell-IDs nach Kundennummer einschließlich Dubletten und sucht nur nach der eindeutigen Nummer.
Edit von hier:
Hier ist ein Dummy-Code. Im Idealfall suche ich nach der Ausgabe der ersten Abfrage unter Verwendung der unique()
.
df <- data.frame(
customerID=as.factor(c(rep("A",3),rep("B",4))),
product=as.factor(c(rep("widget",2),rep("otherstuff",5))),
orderID=as.factor(c("xyz","xyz","abd","qwe","rty","yui","poi")),
OrderDate=as.Date(c("2013-07-01","2013-07-01","2013-07-03","2013-06-01","2013-06-02","2013-06-03","2013-07-01"))
)
DT.eg <- as.data.table(df)
#Gives unique order counts
DT.eg[, list(orderlength = length(unique(orderID))),customerID]
#Gives counts of all orders by customer
DT.eg[,.SD, keyby=list(orderID, customerID)][, .N, by=customerID]
^
|
This should be .N, not .SD ~ R.S.
@Ricardo, nur n neu geschrieben werden Das hat man begriffen, ja, das war der Trick. Prost. – digdeep