Я застрял во время работы над тенденциями. Моя проблема похожа на этот ниже поток, но у меня есть одна дополнительная переменная, называемая «item».Определите тенденцию продаж с несколькими переменными, такими как идентификатор клиента/товар и т. Д.
How to determine trend of time-series of values in R
Мой конечный результат будет, как показано ниже образца. Пожалуйста, помогите
Customer_ID Item Sales_Slope
Josh milk Positive
Josh eggs Negative
Eric milk Mixed
Eric eggs postive
Мои данные:
require("data.table")
dat <- data.table(
customer_ID=c(rep("Josh",6),rep("Ray",7),rep("Eric",7)),
item=c(rep("milk",3),rep("eggs",3),rep("milk",4),rep("eggs",3),rep("milk",3),rep("eggs",4)),
sales=c(35,50,65,65,52,49,15,10,13,9,35,50,65,65,52,49,15,10,13,9))
dat[,transaction_num:=seq(1,.N), by=c("customer_ID")]
Другой, чем data.table и спрашивать о нескольких «от» клавиша, это имеет сильное сходство/- возможный дубликат [как определить тренд ряда значений в R] (http://stackoverflow.com/questions/23600385/how-to-determine-trend-of-a-series-of-values -в-т). Это какой-то стандартный пример или домашнее задание? – smci
Часть о том, как [группировать таблицу данных по нескольким столбцам?] (Https://stackoverflow.com/questions/12478943/r-data-table-group-by-multiple-columns) - использовать 'by = list ("customer_ID", "item") ', а не' by = c (...) ' – smci
@smci - Ваше решение не работает. Ошибка: ошибка в [.data.table' (данные,, список (N.Minus.1 = .N - 1, Change = list (sales [transaction_num +: Элементы в списке 'by' или 'keyby' длина (1,1). Каждая из них должна быть такой же длины, как строки в x или количество строк, возвращаемых i (20). – Murali