Добавление переменной тренда времени в функцию ddply - PullRequest
0 голосов
/ 16 октября 2018

У меня проблемы с добавлением переменной тренда времени в функцию ddply,

Вот упрощенный код:

id <- c(1,1,1,2,2,2)
price <- c(1,2,3,2,1,0)

df <- data.frame(id, price)

price_trends <- ddply(df, ~id, summarise, 
      mean_price = mean(price), 
      sd_price = sd(price))
price_trends

Теперь я также хочу включить коэффициент тренда времени для идентификатора(т. е. цена снижается для идентификатора 1, снижается для идентификатора 2), но у меня возникают трудности с включением его в функцию ddply сверху.Я ценю любую помощь.

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете использовать:

slope <- function(x) (tail(x,1)-x[1])/length(x)
price_trends <- ddply(df, ~id, summarise, 
                      mean_price = mean(price), 
                      sd_price = sd(price),
                      trend = price %>% slope() %>% round(0))
> price_trends
  id mean_price sd_price trend
1  1          2        1     1
2  2          1        1    -1

Обратите внимание, что на самом деле вы получите уклон, если уберете последний round(0).Кроме того, вы можете определить любой коэффициент интереса через функцию.Вы также можете включить функцию непосредственно внутри ddply, например, так:

price_trends <- ddply(df, ~id, summarise, 
                      mean_price = mean(price), 
                      sd_price = sd(price),
                      trend = ((tail(price,1)-price[1])/length(price)) %>% round(0)
                      )
price_trends
...