Recoder une série de colonnes avec une boucleBonjour,
Je reçois fréquemment des données multipoint "" éclatées "dans des colonnes séparées, où une réponse positive pour l'option 1 = 1, l'option 2 = 2, etc. Je dois les recoder en binaires et j'aimerais les avoir dans un script reproductible. Je pense que je suis sur la bonne voie avec le script suivant, mais le message d'erreur "objet non subscriptable {1}" s'affiche lors de l'accès ou de l'évaluation de 'Indice' "lors de l'exécution. J'ai joint un exemple de jeu de données. Merci d'avance.
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: Recoder une série de colonnes avec une boucleMerci! J'ai pu utiliser cela pour créer un script reproductible pour mes projets. J'apprécie l'aide!
Re: Recoder une série de colonnes avec une boucleFor( i = 1, i <= 13, i++,
Il suffit de réduire la boucle For ()
Re: Recoder une série de colonnes avec une boucleMerci, TX, cela fonctionne parfaitement pour l'échantillon que j'ai posté. Comment est-ce que je limiterais ceci aux seules colonnes 14_1 à 14_13 quand elles sont dans un jeu de données plus grand qui inclurait beaucoup plus de colonnes? C'est pourquoi j'essayais d'utiliser une liste spécifique.
Re: Recoder une série de colonnes avec une boucleVoyez si c'est ce que vous voulez
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" );