Buenas tardes.Estoy intentando dividir una columna en tres columnas nuevas y colocar una parte de la cadena de la columna original en una de las tres columnas nuevas. basado en el contexto del texto.Entiendo que el texto a las columnas analizaría la cadena en función de algún delimitador, sin embargo, esto no me lleva a donde necesito estar.Necesito una función que lea el texto, verifique ciertas palabras clave (años, meses o días) y luego coloque una parte de la cadena (el valor numérico que precede a "años", "meses" o "días") en la columna correspondiente. . Veo que la función word () puede extrapolar la primera palabra o valor y esto sería un comienzo, pero luego el valor aún debe colocarse en una de las tres columnas potenciales basadas en el texto. Does anyone have thoughts on how to code this?¿O ideas para una posible solución temporal?Cualquier idea es muy apreciada.
Se adjunta un ejemplo donde la columna 1 muestra los datos en su formato actual y las columnas 2-4 son el estado ideal.¡Gracias!
Stephanie
Aquí hay una forma de manejar esto
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], "- " ) )
)
);Esto es tan asombroso, gracias @txnelson !Este código va a reducir en gran medida el tiempo que me lleva limpiar mis datos, agradezco mucho su respuesta. Pregunta rápida: ¿Hay alguna manera de incrustar las nuevas variables directamente en el dt existente en lugar de crear uno nuevo y luego fusionarlo con el dt original?
Stephanie
Buena atrapada @Thierry_S .Gracias !