медиана в таблице данных R - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь написать код для выполнения задачи: «Напишите функцию Purchases.median.order.price, у которой есть один аргумент: покупки, и которая возвращает среднее значение заказа (число).

Группировка должна производиться с помощью data.table. Записи с неположительным количеством купленных товаров (возвратов) игнорируются.

Обратите внимание, что одна запись может соответствовать нескольким записям - «позициям» с одинаковым порядковым номером, и что при расчете стоимости заказа необходимо учитывать ситуации, когда пользователь купил несколько товаров одного типа (их количество указывается в количестве). »

sample.purchases <- data.table(price = c(100000, 6000, 7000, 5000000),
                               ordernumber = c(1,2,2,3),
                               quantity = c(1,2,1,-1),
                               product_id = 1:4)
purchases.median.order.price(sample.purchases)
# 59500

Пишу:

library(data.table)
sample.purchases <- data.table(price = c(100000, 6000, 7000, 5000000),
                               ordernumber = c(1,2,2,3),
                               quantity = c(1,2,1,-1),
                               product_id = 1:4)

sample.purchases[quantity>0][, price*quantity, by=ordernumber]

Но это не так. Я не знаю, как мне узнать медианное значение?

1 Ответ

1 голос
/ 16 июня 2020

Вручную вручную:

purchases.median.order.price <- function(x){
  x <- order(x);
  n <- length(x) - 1;
  n2 <- (n/2) + 1; 
  sum(x[c(floor(n2), ceiling(n2))])/2
}

В качестве альтернативы вы можете написать функцию, которая просто вызывает median или quantile.

...