Как рассчитать годовой доход с NA в данных? - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужно рассчитать годовой доход из серии данных квартального дохода. Образец данных создается как показано ниже

df <- data.frame(v1 = c(0.01, 0.03, 0.02,0.05, 0.06,0.03,0.01, NA), V2 = c(NA, 0.1, 0.02,NA,0.03,0.05,0.11, 0.2))

Мой код такой:

df_annual <- rollapply(df, width = 4, Return.annualized, scale =4, align = "right", fill = NA)

Результат, который я получил,

v1        V2

NA         NA
NA         NA
NA         NA
0.114161    0.258884
0.169318    0.212756
0.169318    0.139818
0.157854    0.275849
0.139251    0.440558

Я ожидаю получить следующий результат:

V1         V2

NA          NA
NA          NA
NA          NA
0.114161    NA
0.169318    NA
0.169318    NA
0.157854    NA
NA          0.440558

Другими словами, я хочу, чтобы R вычислял годовую доходность как минимум с четырьмя последовательными числами. Мне также интересно, как я получил первый результат. Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

1) Return.annualized пропускает значения NA, а затем вычисляет годовой доход от того, что осталось. Если вы хотите вывод NA, когда любой вход равен NA, проверьте наличие NA на входе и выход NA, если они встречаются; в противном случае запустите Return.annualized.

library(PerformanceAnalytics)
library(zoo)

Return.annualizedNA <- function(x, ...) if (anyNA(x)) NA else Return.annualized(x, ...)
rollapplyr(df, width = 4, Return.annualizedNA, scale = 4, fill = NA)

2) Другая возможность - сделать это напрямую, используя prod

.
library(zoo)

rollapplyr(df + 1, 4, prod, fill = NA) - 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...