encabezado de columna buscar y reemplazarHola,
Puedo reemplazar el nombre del encabezado de la columna con el nombre exacto usando :altura << Establecer nombre( "prueba" );
Si tengo una lista de texto que quiero reemplazar por "".
¿Cómo procedo con eso?
"nombre" "Hora" "sexo" "altura abc peso" "peso xyz" "12 prueba de altura"
KATIE 12 F 59 95 59
LUIS 12 F 61 123 61
resultado final:
"nombre" "Tiempo" "sexo" "abc" "xyz" "12 prueba"
Names Default To Here( 1 );
dt = Open( "C:/JSL/BigClass.jmp" );
headerList = dt << get column names( string );
//:height << Set Name( "test" );
For( i = 1, i <= N Items( headerList ), i++,
If( (headerList[i] == "height" || headerList[i] == "weight"), //trying to find any column header has height or weight and replace with ""
Column( dt, colList[i] ) << set name( " " ) //above are just two examples, maybe put it in list and loop?
)
);
secuencias de comandosRe: buscar y reemplazar encabezado de columnaHola Sam,
Parece que el problema es con el cambio de nombre directo de la columna en el segundo ciclo (j) donde todavía está haciendo la sustitución.
Una posible solución (que se muestra a continuación) es modificar la lista de encabezados (hl) y luego cambiar el nombre de la columna después de que se hayan realizado todos los cambios:
Names Default To Here( 1 );
dt = Open( "C:\Program Files\SAS\JMP\14\Samples\Data\Big Class.jmp" );
hl = dt << get column names( string );
sr = List();
sr[1] = "height"; //
sr[2] = "e"; // Order of replacement strings is critical
sr[3] = "a"; //
For( i = 1, i <= N Items( hl ), i++,
For (j = 1, j <= N Items (sr), j++,
If (contains (hl [i], sr [j]),
txt = substitute (hl [i], sr [j], "x"); // Just for clarity: the expression could be wrapped into the next
Substitute into (hl, hl [i], txt); // Hold all the changes into the hl list
)
);
Column (dt , i ) << set name (hl [i]); // Renames column only after all changes have been made
);
Espero que ayude.
Mejor,
TS
Re: buscar y reemplazar encabezado de columnaTraté de definir la lista con anticipación y hacer un bucle anidado doble. Solo sustituye en cadenaReemplazar[3].
headerList = dt << get column names( string );
stringReplace = List();
stringReplace[1] = "height";
stringReplace[2] = "e";
stringReplace[3] = "a";
For( i = 1, i <= N Items( headerList ), i++,
For( j = 1, j <= N Items( stringReplace ), j++,
Column( dt, i ) << set name( Substitute(headerList[i], stringReplace[j], "" ) )
);
);
Re: buscar y reemplazar encabezado de columnaHola Sam,
Encontré 2 problemas en tu script:
- Usaste la concatenación "||" código para representar su declaración "O" (debe ser "|")
- JMP no permite que la columna se nombre como " ".
Además, generalmente es más rápido y más fácil llamar a la columna por número en lugar de iterar a través de la Lista de nombres de columna.
Entonces, esto es lo que se me ocurrió:
Names Default To Here( 1 );
dt = Open( "C:\Program Files\SAS\JMP\14\Samples\Data\Big Class.jmp" );
headerList = dt << get column names( string );
For( i = 1, i <= N Items( headerList ), i++,
If( (headerList[i] == "height" | headerList[i] == "weight"), //Fixed the "Or" statement
Column( dt, i ) << set name(substitute (headerList [i], "e", "x")) //Used the substitute function as an example, you can replace any string with ""?
)
);