Recodificar una serie de columnas con un bucle.Hola,
Con frecuencia recibo datos "multi-punch" explotados en columnas separadas, donde una respuesta positiva para la opción 1 = 1, la opción 2 = 2, etc. Tengo que recodificarlos a binarios y me gustaría tenerlos en un script reproducible. Creo que estoy en el camino correcto con la siguiente secuencia de comandos, pero me aparece el error "objeto no suscriptible {1} en el acceso o evaluación de 'Subíndice'" cuando lo ejecuto. He adjuntado un conjunto de datos de muestra. Gracias por adelantado.
dt = Current Data Table();
lstColNames = {"14_1","14_2","14_3","14_4","14_5","14_6","14_7","14_8","14_9","14_10","14_11","14_12","14_13"};
For Each Row( For( i = 1, i <= N Items( lstColNames ), i++, If( lstColNames[i][]== i, lstColNames[i][] = 1 ) ) );
Re: Recodificar una serie de columnas con un bucle¡Gracias! Pude usar esto para crear un script reproducible para mis proyectos. ¡Aprecio la ayuda!
Re: Recodificar una serie de columnas con un bucleFor( i = 1, i <= 13, i++,
Solo reduce el bucle For ()
Re: Recodificar una serie de columnas con un bucleGracias, TX, que funciona para la muestra que publiqué perfectamente. ¿Cómo restringiría esto solo a las columnas 14_1 a 14_13 cuando están en un conjunto de datos más grande que incluiría muchas más columnas? Por eso estaba tratando de usar una lista específica.
Re: Recodificar una serie de columnas con un bucleA ver si esto es lo que quieres
Names Default To Here( 1 );
dt = Current Data Table();
lstColNames = dt << get column names( string, nominal );
For( i = 1, i <= N Items( lstColNames ), i++,
theRows = dt << get rows where( As Column( dt, lstColNames[i] ) >= 1 );
If( N Rows( theRows ) > 0,
Column( dt, lstColNames[i] )[theRows] = 1
);
theRows = dt << get rows where( Is Missing( As Column( dt, lstColNames[i] ) ) == 1 );
If( N Rows( theRows ) > 0,
Column( dt, lstColNames[i] )[theRows] = 0
);
Column( dt, lstColNames[i] ) << delete property( "Value Labels" );