Мой набор данных состоит из нескольких наблюдений в 3 столбцах (время, цена и объем), а именно:
time price volume
2017-11-15 9:35:11 301.1 1.1
2017-11-15 9:35:09 300.9 3.0
2017-11-15 9:35:07 300.8 1.4
2017-11-15 9:35:06 300.9 0.1
2017-11-15 9:35:01 301.0 0.6
Я хочу начать с сокращения данных на периоды 24 часа, добавления объема для каждого периода 24 часов и получения на момент агрегирования данных.
Я попытался сделать следующее (исходный набор данных в коде называется "mydf"),
##sum the volume over periods of 24h
mydf_volume_24h <- data.frame (volume = tapply (cbind (mydf$volume), list (cut (mydf$time, breaks="24 hours")), sum))
##bind the previous df with the prices for each time label
mydf_24h <- setNames (cbind (rownames (mydf_volume_24h), mydf_volume_24h, row.names = NULL), c("time", "volume"))
mydf <- mydf %>%
select(-volume)
mydf_24h <- merge (mydf, mydf_volume_24h, by = "time")
Проблема с этим кодом, помимо того (вероятно), что это не лучший / эффективный способ, не возникает, поскольку первая часть кода дает мне сумму объема за период 24 часа, но маркирует каждую сумму временем 23: 00:00, который не всегда существует в моем наборе данных.
Я намеревался сократить периоды в 24 часа, но дать мне (реальное) время наблюдения, которое ближе всего к периоду в 24 часа. Есть какой-либо способ сделать это?
price
. Было бы намного проще, если бы вы могли включить еще несколько строк и идеальный результат для вас. - person AntoniosK   schedule 15.11.2017