Код страны к числовому значению в 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'

Если у вас есть запрос, по которому вы выполняете регрессию, вы можете присоединиться к нему, чтобы выполнить поиск.

Другие вопросы по тегам