Как я могу оценить функцию в группе? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть фрейм данных с 1530 obs 6 varaible. В этом фрейме данных 51 актив с 30 obs каждый. Я попытался применить функцию де MACD, чтобы получить два значения: macd и signal, но выдает ошибку. Это пример:

macdusdt <- filtusdt %>% group_by(symbol) %>% do(tail(., n = 30))

macd1m <- macdusdt %>% 
              mutate (signals = MACD(macdusdt$lastPrice, 
             nFast = 12, nSlow = 26, nSig = 9, maType = "EMA", percent = T))

Ошибка: столбец signals должен иметь длину 30 (размер группы) или единицу, а не 3060

Я хочу применить функцию de MACD к каждому активу во фрейме данных. База данных здесь: https://www.dropbox.com/s/ww8stgsspqi8tef/macdusdt.xlsx?dl=0

1 Ответ

0 голосов
/ 25 июня 2019

На основании предоставленных данных выдает ошибку при применении кода

Ошибка в EMA (c (NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,: n> количество не-значений NA в столбце (столбцах) 1

Чтобы предотвратить это мы можем сделать

library(dplyr)
library(TTR)
filtusdt %>%
     group_by(symbol) %>%
     slice(tail(row_number(), 30)) %>% 
     mutate(signals = if(n() < sum(is.na(lastPrice))) MACD(lastPrice,  
       nFast = 12, nSlow = 26, nSig = 9, maType = "EMA", percent = TRUE) else NA)

Это может быть проблемой из-за предоставленного набора данных подмножества

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...