несколько пропущенных типов из SAS на сервер SQL - PullRequest
4 голосов
/ 24 января 2011

У меня есть набор данных SAS, который я преобразовываю в sql server 2005. В наборе данных sas есть числовые переменные, которые допускают множественные пропущенные значения.

Например, столбец AGE указан как

0-124 = число
, = отсутствует
.A = Неверно
.B = Недоступно

Теперь я хочу использовать число для типа данных сервера sql и должен поддерживать целостность данных. Моя первая мысль - создать справочную таблицу для фактического значения из sas:

-1 = .A = Неверно
-2 = .B = Недоступно

Это кажется грязным, так как возраст потребует ввода для каждого возраста 1-124. Любопытно, если кто-то сталкивался с этим и нашел лучшее решение.

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Я полагаю, что большую часть времени вас не будет волновать, почему отсутствуют значения, просто они отсутствуют - но, кодируя его как отрицательные целые числа, вам придется обязательно отфильтровывать их каждый развы делаете что-нибудь с этой переменной.Это наоборот: вы должны сделать что-то особенное, чтобы включить информацию о типе пропущенности, а не выполнять основную математику и статистику.

Вместо того, чтобы пытаться воссоздать в SQL Server тип данных, которого у него нет,почему бы не работать с тем, что есть?Я бы, вероятно, просто отправил отсутствующие значения как NULL на SQL Server, а затем закодировал бы тип отсутствия во второй переменной.Когда вам действительно нужно знать, почему отсутствуют данные, они все еще там;но когда вы этого не сделаете, SQL Server будет обрабатывать пропущенные значения в вашей переменной, используя методы по умолчанию для работы с ними.

2 голосов
/ 24 января 2011

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

proc format;
  value chgmiss
    .=.
    .a=-1
    .b=-2
    .c=-3
;
run;

data a;
input original;
new=put(original, chgmiss3.);
put original=  new=;
datalines;
.
9
102
3
2
15
90
.a
.b
.
78
;
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...