Код страны к числовому значению в PostgreSQL
Я хотел бы преобразовать список кодов стран в числовые значения для использования в регрессионном анализе. Например, все коды стран, в которых указано "US", получают 1, "DE" - 2, "FR" - 3 и т. Д. Без использования "отличного".
Я попробовал функцию приведения:
cast(countrycode as numeric(1))
Но это не сработало, и я не хочу делать это в Excel с функцией IF для 7000 значений.
У меня уже есть список кодов стран. Я просто хочу объединить числовые значения против него, поэтому, когда я получаю данные, это выглядит так:
US | 1
FR | 2
DE | 3
US | 1
NL | 4
FR | 2
Для 144 (разных) кодов стран..
1 ответ
Если вы точно знаете, что страны в порядке, или вы просто хотите назначить произвольные целочисленные значения, вы можете создать тип перечисления:
create type country as enum ('US', 'DE', 'FR');
Когда вы вставляете строки, вы можете привести их к значениям типа: выберите 'US'::country; "НАС"
Внутренне они рассматриваются как последовательные числа:
select enumlabel, enumsortorder
from pg_enum e join pg_type t on e.enumtypid = t.oid
where typname = 'country'
Если у вас есть запрос, по которому вы выполняете регрессию, вы можете присоединиться к нему, чтобы выполнить поиск.