Я новичок в 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;