¿Cómo alinear cada campo?Tengo un archivo de texto. Me gustaría importar a JMP para su análisis. Pero algunas columnas no están alineadas. ¿Cómo los alineo?
Lo delimitado debe ser espacio, espacios y coma. Pero "," tratará el espacio como texto. ¿Cómo supero este problema?

dtTlog = Open(
D,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Spaces, Space, CSV( 1 ), Comma ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
Automatización y secuencias de comandosventanasRe: ¿Cómo alinear cada campo?El problema que tiene es que está utilizando espacios y comas para los delimitadores, y en la columna f tiene filas que tienen una coma y un delimitador de espacio uno al lado del otro. Un ejemplo es
4, 7
La columna C1c lee el 4, luego ve el , como un delimitador seguido de un espacio como segundo delimitador, por lo que como no vio un valor después del primer delimitador y el segundo delimitador, aplica un valor faltante a la columna f. , y el 7 se convierte en el valor de la columna C2c.
A continuación se muestra una secuencia de comandos que lee todos los datos, elimina todas las comas, los guarda en un área temporal y luego los vuelve a leer usando su flujo de entrada.
names default to here(1);
d= "<YOUR path="" and="" file="" name="">";
dt = Open(
D ,
columns( New Column( "c000001", Character, "Nominal" ) ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( CSV( 0 ) ),
Treat Leading Zeros as Character( 1 ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 0 ),
Column Names Start( 0 ),
First Named Column( 0 ),
Data Starts( 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
for each row(:c000001 = Trim(substitute(:c000001,","," ")));
dt << save ("$TEMP\interium file.txt");
dtTlog = Open(
"$TEMP\interium file.txt",
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Spaces, Space, CSV( 1 ), Comma ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 2 ),
Data Starts( 3 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
); </YOUR>

Re: ¿Cómo alinear cada campo?
Está bien, ya veo. Entiendo tu sugerencia. Pero me da la alerta anterior.
Re: ¿Cómo alinear cada campo? For Each( {col},
dt << Get Column Reference( dt << Get Column Names( Character ) ),
If( !Is Empty( col << Get Formula ),
Continue()
);
For Each Row( dt, col[] = Substitute( col[], ",", " ", <<IGNORECASE></IGNORECASE>I replace that line with these code. It's working now. Thanks.
Re: ¿Cómo alinear cada campo?Tuve un pequeño error en mi código original. He vuelto y lo he corregido. Por favor cópielo y verifique que funcione. La solución que implementó fue buena; sin embargo, el código original no se lee en cada columna por separado. Lee todos los datos de cada fila como una columna y luego los trata desde el punto de vista de tener una tabla de datos con una sola columna.
Re: ¿Cómo alinear cada campo?Alternativamente, se podría usar Cargar archivo de texto para abrir el archivo como texto, eliminar las comas mediante sustituto y finalmente abrir el texto en una tabla de datos.
publicaciones originales:
.csv Error de importación / @Craige_Hales
Importación de archivos: ¿especificar NAN? / @jthi
txtfile = Load Text File("$DOWNLOADS/log - question2.txt");
substituteinto(txtfile,","," ");
Open(
Char to Blob(txtfile),
Import Settings(
End Of Field( Spaces, Space ),
)
);
Re: ¿Cómo alinear cada campo?Texto a columnas: manejar los datos faltantes correctamente
"correctamente"?
Para su tarea, el texto a columnas funciona de maravilla:
dt = Open(
"$DOWNLOADS/log - question2.txt",
Import Settings(
End Of Field( Tab ),
Labels( 0 )
)
);
// split columns via Text to columns
dt << Text to Columns( columns( :c000001 ), Delimiters( " ", "," ));
dt << Delete Columns( :c000001);
// Move column names up
dt << Move up;