Вложенное ifelse заявление

Я все еще учусь переводить код SAS в R и получаю предупреждения. Мне нужно понять, где я делаю ошибки. Что я хочу сделать, это создать переменную, которая суммирует и дифференцирует 3 статуса населения: материковый, заграничный, иностранный. У меня есть база данных с 2 переменными:

национальность:idnat (французский, иностранец),

Еслиidnat Французский тогда:

место рождения id:idbp (материк, колония, за рубежом)

Я хочу обобщить информацию отidnat а такжеidbp в новую переменную под названиемidnat2:

статус: k (материк, заграница, иностранец)

Все эти переменные используют «тип символа».

Ожидаемые результаты в столбце idnat2:

   idnat     idbp   idnat2
1  french mainland mainland
2  french   colony overseas
3  french overseas overseas
4 foreign  foreign  foreign

Вот мой код SAS, который я хочу перевести на R:

if idnat = "french" then do;
   if idbp in ("overseas","colony") then idnat2 = "overseas";
   else idnat2 = "mainland";
end;
else idnat2 = "foreigner";
run;

Вот моя попытка в R:

if(idnat=="french"){
    idnat2 <- "mainland"
} else if(idbp=="overseas"|idbp=="colony"){
    idnat2 <- "overseas"
} else {
    idnat2 <- "foreigner"
}

Я получаю это предупреждение:

Warning message:
In if (idnat=="french") { :
  the condition has length > 1 and only the first element will be used

Мне посоветовали использовать «вложенныйifelse"вместо этого для простоты, но получите больше предупреждений:

idnat2 <- ifelse (idnat=="french", "mainland",
        ifelse (idbp=="overseas"|idbp=="colony", "overseas")
      )
            else (idnat2 <- "foreigner")

Согласно предупреждающему сообщению, длина больше 1, поэтому учитывается только то, что находится в первых скобках. Извините, но я не понимаю, при чем здесь эта длина? Кто-нибудь знает, где я не прав?

Ответы на вопрос(8)

Ваш ответ на вопрос