Не могу понять, как использовать оператор IF - PullRequest
0 голосов
/ 18 октября 2019

Я хочу создать категориальную переменную для моей БД: я хочу создать группу «Same_Region», в которую входят все люди, которые живут и работают в одном регионе, и «Diff_Region» для тех, кто этого не делает. Я пытался использовать утверждение IF, но на самом деле я не знаю, как правильно сказать «если переменные Регион проживания и Регион работы совпадают, верните ...». Это самый первый раз, когда я пытаюсь подойти к себе сам, и я чувствую себя немного потерянным.

Я попытался поместить две переменные (сделанные двумя буквами - например, «BO») в качестве символов и использовать команду «grep». Но в итоге это не дало результатов. Затем я попытался поместить обе переменные как факторы, и ничего особо не изменилось.

---- В R -----

extractSamepr <- function(RegionOfRes, RegionOfWo){
  if(RegionOfRes== RegionOfWo){
    return("SamePr")
  } 
  else {
    return("DiffPr")
  }    

SamePr <- NULL 

for (i in 1:nrow(Data.Base)) {
  SamePr <- c(SamePr, extractSamepr(Data.Base[i, "RegionOfRes", "RegionOfWo"]))
}    

1 Ответ

0 голосов
/ 18 октября 2019

Способ ifelse, предложенный в комментарии @ deepseefan , является стандартным способом решения этого типа проблемы.
Вот еще один способ. Он использует тот факт, что FALSE/TRUE закодированы как целые числа 0/1, чтобы создать логический вектор на основе равенства, а затем добавить 1 к этому вектору, давая вектор значений 1/2. Этот результат используется в последней инструкции функции для индексации вектора с двумя возможными результатами.

extractSamepr <- function(DF){
  i <- 1 + (DF[["RegionOfRes"]] == DF[["RegionOfWo"]])
  c("DiffPr", "SamePr")[i]
}

Data.Base$SamePr <- extractSamepr(Data.Base)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...