Я новичок в SAS, и мне нужна помощь с очень простой проблемой.
- У меня есть сотни отдельных наборов данных, и я хочу извлечь строки, которые соответствуют определенному диагностическому идентификатору.
- Диагностические идентификаторы перечислены в столбцах DX1-DX11. Однако некоторые наборы данных имеют только DX1-DX4, а другие имеют диагностические идентификаторы в DX1-DX09.
- Поэтому мне нужен способ определить количество столбцов DX в конкретном наборе данных, чтобы я мог сопоставить интересующие мои диагностические идентификаторы с идентификаторами, представленными в наборе данных во всех соответствующих столбцах.
Например, я хотел сделать следующее, но я не могу сделать это во всех наборах данных, потому что, если набор данных не имеет столбца DX11, например, код нарушается, так как DX11 не присутствует в наборе данных.
DATA DX_CODES (KEEP = ID DX1 DX2 DX3 DX4 DX5 DX6 DX7 DX8 DX9 DX10 DX11);
SET LIB.&SAS_FILE_N;
WHERE DX1 IN ('123', '1234', '12345', '123456') OR
DX2 IN ('123', '1234', '12345', '123456') OR
DX3 IN ('123', '1234', '12345', '123456') OR
DX4 IN ('123', '1234', '12345', '123456') OR
DX5 IN ('123', '1234', '12345', '123456') OR
DX6 IN ('123', '1234', '12345', '123456') OR
DX7 IN ('123', '1234', '12345', '123456') OR
DX8 IN ('123', '1234', '12345', '123456') OR
DX9 IN ('123', '1234', '12345', '123456') OR
DX10 IN ('123', '1234', '12345', '123456') OR
DX11 IN ('123', '1234', '12345', '123456');
RUN;