Spalte basierend auf Text teilenGuten Tag.Ich versuche, eine Spalte in drei neue Spalten aufzuteilen und ein Stück der Zeichenfolge aus der ursprünglichen Spalte in eine der drei neuen Spalten zu platzieren basierend auf dem Kontext des Textes.Ich verstehe, dass Text in Spalten die Zeichenfolge basierend auf einem Trennzeichen analysieren würde, aber das bringt mich nicht ganz dahin, wo ich sein muss.Ich benötige eine Funktion, die den Text liest, nach bestimmten Schlüsselwörtern sucht (Jahre, Monate oder Tage) und dann ein Stück der Zeichenfolge (den numerischen Wert vor "Jahre", "Monate" oder "Tage") in die entsprechende Spalte einfügt . Ich sehe, dass die word () -Funktion das erste Wort oder den ersten Wert extrapolieren kann, und dies wäre ein Anfang, aber dann muss der Wert immer noch in eine von drei möglichen Spalten basierend auf dem Text eingefügt werden. Hat jemand Gedanken darüber, wie man das codiert?Oder Ideen für eine mögliche Umgehung?Jeder Einblick wird sehr geschätzt.
Beispiel beigefügt, in dem Spalte 1 die Daten in ihrem aktuellen Format anzeigt und die Spalten 2 bis 4 den idealen Zustand darstellen.Dankeschön!
Stephanie
SkriptingBetreff: Spalte basierend auf Text teilenHier ist eine Möglichkeit, damit umzugehen
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], "- " ) )
)
);Betreff: Spalte basierend auf Text teilenHallo,
Ich denke, es gibt einen kleinen Tippfehler am Ende des Skripts: Im letzten Match-Fall sollte die empfangende Spalte lauten: AgeYears [i], nicht: AgeMonths [i].
Beste,
TSBetreff: Spalte basierend auf Text teilenDas ist so toll, danke @ txnelson !Dieser Code wird die Zeit, die ich zum Bereinigen meiner Daten benötige, erheblich verkürzen. Ich freue mich sehr über Ihre Antwort. Kurze Frage: Gibt es eine Möglichkeit, die neuen Variablen direkt in das vorhandene dt einzubetten, anstatt eine neue zu erstellen und dann wieder mit dem ursprünglichen dt zusammenzuführen?
Stephanie
Betreff: Spalte basierend auf Text teilenGuter Fang @ Thierry_S .Vielen Dank !