Bonne après-midi.J'essaie de diviser une colonne en trois nouvelles colonnes et de placer un morceau de la chaîne de la colonne d'origine dans l'une des trois nouvelles colonnes en fonction du contexte du texte.Je comprends que le texte en colonnes analyserait la chaîne en fonction d'un délimiteur, cependant, cela ne m'amène pas tout à fait là où je dois être.J'ai besoin d'une fonction qui lit le texte, vérifie certains mots-clés (années, mois ou jours), puis place un morceau de la chaîne (la valeur numérique qui précède «années», «mois» ou «jours») dans la colonne appropriée . Je vois que la fonction word () peut extrapoler le premier mot ou la première valeur et ce serait un début, mais la valeur doit encore être placée dans l'une des trois colonnes potentielles en fonction du texte. Quelqu'un a-t-il des idées sur la façon de coder cela?Ou des idées pour un contournement potentiel?Tout conseil est grandement apprécié.
Exemple ci-joint où la colonne 1 montre les données dans leur format actuel et les colonnes 2 à 4 sont l'état idéal.Je vous remercie!
Stéphanie
Voici une façon de gérer cela
Names Default To Here( 1 );
dt = New Table( "Example dt",
Add Rows( 10 ),
Set Header Height( 46 ),
New Column( "Age",
Character,
"Nominal",
Set Selected,
Set Values(
{"2-day old", "43-day old", "3-day old",
"3-month old", "4-month old", "5-day old",
"32-day old", "13-year old", "10-year old",
"10-month old"}
)
)
);
dt << New Column( "AgeYears" );
dt << New Column( "AgeMonths" );
dt << New Column( "AgeDays" );
For( i = 1, i <= N Rows( dt ), i++,
Match( Word( 2, :Age[i], "- " ),
"day",
:AgeDays[i] =
Num( Word( 1, :age[i], "- " ) ),
"month",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) ),
"year",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) )
)
);C'est tellement génial, merci @txnelson !Ce code va considérablement réduire le temps qu'il me faut pour nettoyer mes données, j'apprécie grandement votre réponse. Question rapide: y a-t-il un moyen d'incorporer les nouvelles variables directement dans le dt existant plutôt que d'en créer un nouveau et de les fusionner ensuite avec le dt d'origine?
Stéphanie
Bonne prise @Thierry_S .Je vous remercie !