Это то, что выглядит мои данные заказа клиента, как для одного клиента:Использование 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, что-то вроде mean
из всех order_no[1]
, используя by=(customer_id)
возможно? Если есть способ сделать это одним шагом и пропустить создание order_total
, тогда это еще лучше.
ли вы попробовать 'customer_stats [, avg_order_size: = среднее (order_total), по списку = (order_no, customer_id)]' с помощью ': =' уже выполняет задание поэтому нет необходимости дополнительные не назначить 'данных. table' – dickoa
@ dickoa, если вы группируете как 'order_no', так и' customer_id', тогда вы будете использовать «100, 300, 100, 200' * отдельно * (которые будут иметь те же значения). – Arun
@Arun Да, вы правы – dickoa