Выполнение цикла внутри оператора if - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть данные

x$buy_indicator <- c("HOLD","BUY","BUY","HOLD","HOLD","BUY","BUY","HOLD")
x$sell_indicator <- c("HOLD","HOLD","SELL","SELL","HOLD","SELL","SELL","HOLD")

Я хочу, чтобы мои выходные данные были такими, чтобы при buy_indicator=BUY и sell_indicator=SELL они менялись на HOLD в обоих индикаторах

Мой код R

for(i in 1:nrow(x)){
if(x$Buy_indicator[i]=="BUY" & x$Sell_indicator[i]=="SELL") {x$Buy_indicator[i]=="HOLD" & x$Sell_indicator[i]=="HOLD"}}

1 Ответ

0 голосов
/ 28 ноября 2018

Мы могли бы создать логический вектор для поиска строк, в которых необходимо изменить значения

x[x$buy_indicator == "BUY" & x$sell_indicator == "SELL", ] <- "HOLD"


x
#  buy_indicator sell_indicator
#1          HOLD           HOLD
#2           BUY           HOLD
#3          HOLD           HOLD
#4          HOLD           SELL
#5          HOLD           HOLD
#6          HOLD           HOLD
#7          HOLD           HOLD
#8          HOLD           HOLD

Если у вас есть другие столбцы, кроме buy_indicator и sell_indicator, вы также можете подмножество столбцов

x[x$buy_indicator == "BUY" & x$sell_indicator == "SELL", 
            c("buy_indicator", "sell_indicator")] <- "HOLD"

данные

x <- data.frame(
      buy_indicator = c("HOLD","BUY","BUY","HOLD","HOLD","BUY","BUY","HOLD"), 
      sell_indicator = c("HOLD","HOLD","SELL","SELL","HOLD","SELL","SELL","HOLD"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...