Добавление переменной тренда времени в функцию ddply
У меня возникают трудности при добавлении переменной тренда времени в функцию 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 ответ
Решение
Вы можете использовать:
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