Có một truy vấn hiệu quả hơn sausử dụng hiệu quả data.table R và độc đáo()
DT[, list(length(unique(OrderNo))),customerID]
để tinh chỉnh một bảng định dạng DÀI với id khách hàng, số thứ tự và chi tiết sản phẩm, có nghĩa là có sẽ là các hàng trùng lặp có cùng id thứ tự nếu khách hàng đã mua nhiều hơn 1 mặt hàng trong giao dịch đó.
Cố gắng tìm ra các giao dịch mua duy nhất. length()
cung cấp số lượng ID của tất cả các ID đặt hàng theo ID khách hàng bao gồm các từ khóa trùng lặp, chỉ tìm kiếm số duy nhất.
Chỉnh sửa từ đây:
Dưới đây là một số mã giả. Lý tưởng nhất là những gì tôi đang tìm kiếm là đầu ra từ truy vấn đầu tiên sử dụng 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, chỉ cần n oticed rằng, yep, đã làm các trick. cổ vũ. – digdeep