2015-12-10 4 views
0

Я хотел бы преобразовать список кодов стран в числовые значения для использования в регрессионном анализе. Например, все коды стран, которые говорят «США», получают 1, «DE» получают 2, «FR» получают 3 и т. Д., Не используя «отдельный».код страны для численного значения в PostgreSQL

Я попробовал функцию произнесения:

cast(countrycode as numeric(1)) 

Но это не сработало, и я не хочу, чтобы это сделать в Excel с IF-функцией для 7000 значений.

У меня есть список кодов стран. Я просто хочу, чтобы присоединиться числовые значения против него так, когда я получить данные, он показывает, как:

US | 1 
FR | 2 
DE | 3 
US | 1 
NL | 4 
FR | 2 

Для 144 (различных) кодов стран ..

+2

Создайте таблицу поиска с сопоставлением кода с номером, затем присоедините таблицу к этой таблице поиска –

+0

Первое предложение corax228 достаточно хорошее, если у вас не более 10 случаев с разными кодами, иначе sql нечитабельно. если у вас есть нечто большее, вы можете написать небольшое. чтобы упростить ваш sql, или вы можете сделать таблицу с кодами страны и присоединиться к ней. –

+0

У меня есть список кодов стран. Я просто хочу связать числовые значения против него, поэтому, когда я извлекаю данные, это выглядит так: US | 1 FR | 2 DE | 3 США | 1 NL | 4 FR | 2 Для 144 различных кодов страны. – Naj

ответ

0

Если вы знаете наверняка, что страны находятся в заказ, или вы просто хотите присвоить произвольные целые значения, вы можете создать тип перечисления:

create type country as enum ('US', 'DE', 'FR'); 

При вставке строк, вы можете привести их к значениям типа: выбрать «US» :: страну; «США»

Внутри них рассматриваются как последовательные номера:

select enumlabel, enumsortorder 
from pg_enum e join pg_type t on e.enumtypid = t.oid 
where typname = 'country' 

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