這是我的顧客訂單數據看起來像一個單一的客戶:基於R data.table彙總選擇行
order_no customer_id product amount order_total
23 1 A 100 100
24 1 A 100 300
24 1 B 100 300
24 1 C 100 300
25 1 B 100 100
26 1 A 100 200
26 1 B 100 200
我要計算一個新的列中的每個客戶的平均訂單大小,所以該客戶將是175 =(100 + 300 + 100 + 200)/ 4:
order_no customer_id amount order_total avg_order_size
23 1 100 100 175
24 1 100 300 175
24 1 100 300 175
24 1 100 300 175
25 1 100 100 175
26 1 100 200 175
26 1 100 200 175
我試圖用這個版本的一些,但沒有運氣:
customer_stats <- data.table(customer_stats)[, avg_order_size := mean(order_total), by=list(order_no, customer_id)]
我真正需要做的是從每個order_no中選擇一行,類似的所有order_no[1]
的mean
或許?如果有一種方法可以一步完成,並跳過創建order_total
,那就更好了。
你嘗試'customer_stats [,avg_order_size:=平均值(ORDER_TOTAL),由=名單(order_no,CUSTOMER_ID)]'使用':='已經執行的任務,從而無需額外分配你的'數據。表' – dickoa
@dickoa,如果你同時使用'order_no'和'customer_id',那麼你將採用'100,300,100,*'*分別表示*(它們最終會得到相同的值)。 – Arun
@阿倫是的,你說得對 – dickoa