У меня есть большие наборы данных, для которых мне нужно создать скользящие средние.
Я использую df$new_value1=replace(df$value, df$value<2.0,0)
, чтобы получить то, что мне нужно (то есть значения> = 2.0).
Затем я использую df$new_value2=round((df$new_value1)*50,1)
Как только у меня есть дата, как мне нужно, я вычисляю SMA, используя:
df=df%>%
group_by(Name) %>%
mutate(SMA1 = round(TTR::SMA(new_value2,50),1)) %>%
mutate(SMA2 = round(TTR::SMA(new_value2,100),1)) %>%
mutate(SMA3 = round(TTR::SMA(new_value2,150),1)) %>%
mutate(SMA4 = round(TTR::SMA(new_value2,200),1)) %>%
mutate(SMA5 = round(TTR::SMA(new_value2,250),1))`
Хотя это работает по большей части ион создаст SMA, как мне нужно, я получу вывод, подобный следующему:
Name new_value2 SMA5(Current) SMA5(What it should be)
A 2.2
A 2.3
A 2.5
A 3.0
A 2.7 2.54 2.54
A 2.1 2.52 2.53
A 0 2.52 2.06
A 0 2.52 1.56
A 0 2.52 0.96
A 0 2.52 0.42
A 0 0.00 0.00
Моя проблема в том, что он держится до последнего числа (почти похоже, что он не распознает нули), ачем усреднение вниз с нулями.Я бы хотел, чтобы данные выглядели как крайний правый столбец, но сейчас он выглядит как 3-й столбец.Я не уверен, в чем проблема.