У меня возникают проблемы со ссылкой на условия, которые имеют место в нескольких строках с использованием цикла for.Ссылка на условия в нескольких строках (для цикла)
Идея заключается в следующем. Существует блок данных с столбцами LastPrice и KCT. Хотите добавить столбец SignalBinary к dataframe, и если
1) LastPrice [J]> БФК [J] в любых 3 последовательных строк, &
2) LastPrice [J + 1] - LastPrice [J + 1 + 3]> 12 в любой из строк j + 1 до j + 1 + 10 (т. Е. 10 строк ниже)
затем необходимо записать 1 в SignalBinary [i].
df <- data.frame(nrow =20, ncol =2)
df <- data.frame(LastPrice = c(1221,1220,1220,1217,1216,1218,1216,1216,1217,1220,1219,1218,1220,1216,1217,1218,1218,1207,1206,1205), KCT = c(1218,1218,1219,1218,1221,1217,1217,1216,1219,1216,1217,1216,1219,1217,1218,1217,1217,1217,1219,1217))
df$SignalBinary <-for(j in1:20){for(i in1:10){ifelse (df$LastPrice[j]> df$KCT[j]& df$LastPrice[j+1]> df$KCT[j+1]& df$LastPrice[j+2]> df$KCT[j+2]& df$LastPrice[j+i]- df$LastPrice[j+i+3]>12,1,0)}}
На основании данных, ожидал бы код для записи 1 в строках 10 и 11, и 0s в состоянии покоя. Но я делаю что-то неправильно. Запуск кода не дает сообщения об ошибке, но он не создает df $ SignalBinary. Запуск df $ SignalBinary говорит NULL.
BTW Целью этого является применение кода к большой базе данных цен, для запуска статистики по двоичным сигналам.
Надеюсь, что кто-то может помочь. Большое спасибо
Вот одна проблема, думаю о том, когда я = 20 и J = 10 при доступе к ф.р. $ LastPrice [J + I ]. Ваша попытка получить доступ к строке 30 из набора данных всего за 20 строк. ifelse() не выдает ошибку на этом –
Вы правы. Но не знаю, как это исправить, к сожалению. – Krug