Я хочу установить символ как целое число, чтобы соответствовать модели. например, есть пять континентов, как преобразовать их в целые числа. Цикл for кажется довольно неэффективным. А есть закономерность настройки номера? Я хочу указать пол, возрастной диапазон, уровень образования, континент как числовые.

df <-c("Africa","Americas","Asia","Europe","Oceania","Africa","Americas","Asia","Europe","Oceania")
df1 <- c()
for (i in 1:10) {
  if(df[i] == "Africa"){
    df1[i] <- 1
  }else if(df[i]=="Americas"){
    df1[i] <- 2
  }else if(df[i]=="Asia"){
    df1[i] <- 3
  } else if(df[i]=="Europe"){
    df1[i] <- 4
  } else if(df[i]=="Oceania"){
    df1[i] <- 5
  }
}
r
0
zeizeiv9 27 Ноя 2021 в 14:57

1 ответ

Лучший ответ
  1. Вариант с использованием match.
df <-c("Africa","Americas","Asia","Europe","Oceania","Africa","Americas","Asia","Europe","Oceania")
order <- c("Africa","Americas","Asia","Europe","Oceania")
result <- match(df, order)
#Also 
#result <- match(df, unique(df))
result
#[1] 1 2 3 4 5 1 2 3 4 5
  1. Используя factor.
result <- as.integer(factor(df, order))
1
Ronak Shah 27 Ноя 2021 в 15:02
Большое спасибо. Я тестирую второй способ, и он очень эффективен. В наборе данных есть значения NA, и преобразование также NA, это хорошо!
 – 
zeizeiv9
27 Ноя 2021 в 16:39