我有一个数据框,其中有1530个6个变量的obs。在此数据框中,有51个资产,每个资产有30个Obs。我试图应用de 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
答案 0 :(得分:0)
根据提供的数据,应用代码时会出现错误
EMA中的错误(c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,: n>第1列中非NA值的数量
为防止这种情况发生,
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)
由于提供了子集数据集,这可能是一个问题