Pido disculpas, pero no estoy seguro de lo que usted podría incluso llamar a este problema. Tengo algunos datos que proporcionan un código numérico para la carrera de la siguiente manera:
hispano(1) + american_indian_or_alaska_native(2) + asiáticos(4) + black_or_african_american(8) + native_hawaiian_or_other_pacific_islander(16) + blanco(32)
Así, por ejemplo, un 5 representa a una persona que se identifica como los Asiáticos y los Hispanos (4 + 1), y un 25 representa a una persona que se identifica como de las islas del Pacífico, Negros e Hispanos (16 + 8 + 1).
Estoy tratando de escribir un programa que va a recuperar lo que las carreras están presentes desde el número dado. Me imagino que debe ser una ecuación que puede determinar la combinación sin detallando cada combinación única, pero yo podría estar equivocado! Traté de pensar acerca del uso de modulo pero no llegué muy lejos.
Gracias, y si tienes sugerencias para las etiquetas, por favor, comentarios como no estoy seguro de que esto encaja en matemáticas.
*editar Gracias a todos! Esto realmente me ayudó a pensar sobre el problema y generar una solución eficiente. Responder a mi pregunta no depender del uso de SAS, pero aquí está el código SAS terminé usando, que creo que muestra de forma intuitiva cómo resolver el problema:
data want;
set have;
/* convert decimal to 6-place binary */
eth_bin = put(ethnicity, binary6.);
/* if 1st digit is 1 then race is present, and so on*/
if substr(eth_bin, 1, 1) = 1 then white = "Yes";
if substr(eth_bin, 2, 1) = 1 then pacific_islander = "Yes";
if substr(eth_bin, 3, 1) = 1 then black = "Yes";
if substr(eth_bin, 4, 1) = 1 then asian = "Yes";
if substr(eth_bin, 5, 1) = 1 then american_indian = "Yes";
if substr(eth_bin, 6, 1) = 1 then hispanic = "Yes";
run;