次よりも効率的なクエリはありますか
DT[, list(length(unique(OrderNo)) ),customerID]
顧客 ID、注文番号、および製品ライン アイテムを含む LONG 形式のテーブルを調整します。つまり、顧客がそのトランザクションで複数のアイテムを購入した場合、同じ注文 ID を持つ重複する行が存在することになります。
ユニークな買い物をしようとしています。length()
一意の番号だけを探して、重複を含む顧客 ID ごとにすべての注文 ID の数を示します。
ここから編集:
ここにいくつかのダミーコードがあります。理想的には、. を使用した最初のクエリからの出力を探しています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.