У меня есть временные ряды данных форматавременных рядов и NA обработки с использованием R
Ask Bid Trade Ask_Size Bid_Size Trade_Size
2016-11-01 01:00:03 NA 938.10 NA NA 203 NA
2016-11-01 01:00:04 NA 937.20 NA NA 100 NA
2016-11-01 01:00:04 938.00 NA NA 28 NA NA
2016-11-01 01:00:04 NA 938.10 NA NA 203 NA
2016-11-01 01:00:04 939.00 NA NA 11 NA NA
2016-11-01 01:00:05 NA 938.15 NA NA 19 NA
2016-11-01 01:00:06 NA 937.20 NA NA 100 NA
2016-11-01 01:00:06 938.00 NA NA 28 NA NA
2016-11-01 01:00:06 NA NA 938.10 NA NA 69
2016-11-01 01:00:06 NA NA 938.10 NA NA 831
2016-11-01 01:00:06 NA 938.10 NA NA 134 NA
Структура данных временных рядов является
str(df_ts)
An ‘xts’ object on 2016-11-01 01:00:03/2016-11-02 12:59:37 containing:
Data: num [1:35797, 1:6] NA NA 938 NA 939 NA NA 938 NA NA ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:6] "Ask" "Bid" "Trade" "Ask_Size" ...
Indexed by objects of class: [POSIXct,POSIXt] TZ:
xts Attributes:
NULL
Я пытаюсь объединить данные каждые 1 минута, используя следующий код
# Creating a Function
apply.periodly <- function (x, FUN, period, k = 1, ...)
{
if (!require("xts")) {
stop("Need 'xts'")
}
ep <- endpoints(x, on = period, k=k)
period.apply(x, ep, FUN, ...)
}
# Aggregation every minute
df_aggregate_min <- apply.periodly(x = df_ts, FUN = mean, period = "minutes", k = 1)
Но из-за «NA» в данных я получаю неправильный результат. Как объединить столбцы каждую минуту, игнорируя NA?
пользовательские функции означают ('naMean <- функция (х) {среднее (х, na.rm = TRUE)}') в последней строке должно сделать трюк – TBSRounder
Спасибо, но результирующий выход является Среднее значение для всей колонки, я хотел бы получить каждую из столбцов мудрую сумму. Код, который я использовал, - df_aggregate_min <- apply.periodly (x = df_ts, FUN = naMean, period = "minutes", k = 1) – Abhishek