#r #dplyr #seq
#r #dplyr #seq #продолжение
Вопрос:
У меня есть столбец ежедневных цен на акции за последние 3 года. Теперь я хотел бы найти последовательности, в которых цена увеличилась 5 раз подряд, а затем создать новый столбец, в котором я установил «купить». Кто-нибудь может мне помочь, как сгенерировать это?
Это то, что я пробовал, но, пожалуйста, извините, если это не имеет большого значения, потому что я новичок
x <- FB[,"Close"] if (x<x 1, x 1<x 2, x 2<x 3, x 3<x 4, x 4<5) { FB$buy <- 1 }
Комментарии:
1. не могли бы вы поделиться с нами кодом, который вы пробовали до сих пор
2. x <- FB[,»Закрыть»] если (xпробовал, но, пожалуйста, извините, если это не имеет большого значения, потому что я новичок
3. извините, я не понял, лучше всего отредактировать свой пост и поместить туда код. Используйте code markdown для наглядности, в окне редактирования есть информация о том, как это сделать
4. Я получаю это сообщение, когда хочу его отредактировать: «Похоже, что ваш пост содержит код, который неправильно отформатирован как код». Спасибо за вашу готовность помочь, но мне нужно сдаться :/
5. Я отредактировал ваш вопрос, пожалуйста, посмотрите, как я пометил ваш код (обратные тройные тики), чтобы вы знали, что делать в следующий раз
Ответ №1:
В вашем теге для этого поста сказано dplyr
, что я предоставлю dplyr
метод вместо базового R
метода. Это метод грубой силы, но ему должно быть довольно легко следовать.
library(dplyr)
FB <- data.frame(
"Close" = c(1,2,3,4,5,6,1,2,3,4,1,2,3,4,5,6),
stringsAsFactors = FALSE
)
# Brute Force dplyr
x <- FB %>%
mutate(buy = Close>lag(Close,1) amp;
lag(Close,1)>lag(Close,2) amp;
lag(Close,2)>lag(Close,3) amp;
lag(Close,3)>lag(Close,4) amp;
lag(Close,4)>lag(Close,5)
) %>%
# If you really need a 1 instead of a True
mutate(buy = as.numeric(buy)) # %>%
# If there weren't 5 previous the result is NA
# and you can impute something that makes sense
# if anything makes sense.
# mutate(buy = ifelse(is.na(buy),0,buy))
x
# Close buy
# 1 NA
# 2 NA
# 3 NA
# 4 NA
# 5 NA
# 6 1
# 1 0
# 2 0
# 3 0
# 4 0
# 1 0
# 2 0
# 3 0
# 4 0
# 5 0
# 6 1
Комментарии:
1. Большое тебе спасибо, Адам!! С наилучшими пожеланиями из Швейцарии