almacenando tablas de datos de open () en una listaHola,
Me gustaría usar la palabra clave open () para abrir varias hojas de trabajo y almacenar estos datos en una lista.
Tables = {};
//normaly I would like to use a for loop here, however the number of worksheets will vary.
Tables = Open ("pathway",
invisible, info about the data..);
//do something with the tables
for (i = 1, i <= NITEMS(Tables), i++,
close(Tables[i], nosave);
);
Pregunta adicional:
¿También es posible utilizar un buscador / biblioteca protegido por nombre de usuario / contraseña para buscar y descargar información a jmp?
Saludos cordiales
Anders
Re: almacenando tablas de datos de open () en una listaHola,
si mi lista se ve asi
Resolví el problema implementando un bucle while (archivo = Tablas). Cuando tuve dos bucles que se referían a la misma lista, JMP no pudo encontrar mis referencias. Para mí, parece que las Tablas se declaran fuera de su bucle al decir que Tablas = repetir (....), sin embargo, incluso si declaro Tablas = {} fuera de su bucle, mi segundo bucle no podría hacer referencia a él . ¿Sabes la razón de esto?
f = N Artículos (flist)
Mientras ( F > 0 ,
yo = 1 ;
dt = Abierto (
mi camino || flist El F ] ,
Importar ajustes (
Fin de la línea ( CRLF , CR , LF ) ,
Fin de campo ( Otro ( ";" ) , CSV ( 0 ) ) ,
Cotizaciones de la tira ( 1 ) ,
Utilice Apostrophe como comilla ( 0 ) ,
Escanear todo el archivo ( 1 ) ,
Trate las columnas vacías como numéricas ( 0 ) ,
CompressNumericColumns ( 0 ) ,
CompressCharacterColumns ( 0 ) ,
CompressAllowListCheck ( 0 ) ,
Etiquetas ( 1 ) ,
Inicio de nombres de columna ( 1 ) ,
Inicio de datos ( 2 ) ,
Líneas para leer ( "Todos" ) ,
Regla del año ( "20xx" )
) ,
) ;
expediente El yo ] = dt ;
yo = yo + 1 ;
F--;
....
);
Re: almacenando tablas de datos de open () en una listaProbé mi código con archivos .csv y funciona (JMP 12.2 para Mac). También funciona con archivos invisibles.
los Mesas la lista debe verse algo como esto:
Show ( Mesas )
/ *:
Tablas = {DataTable ("Data 1"), DataTable ("Data 2"), DataTable ("Data 3")};
Asegúrese de que el csv se abra correctamente como una tabla de datos en JMP (desactivar temporalmente invisible ) y que la tabla no se ha cerrado en una operación anterior.
Re: almacenando tablas de datos de open () en una listaHola,
He intentado incorporar este código en otras secciones de mi script, sin embargo no puedo obtener dt = Tables [i] o dt = Data Table (Tablas [i]) para hacer referencia a mis tablas en Tables. Vea a continuación los ejemplos:
// Utilicé tu código para abrir todos los archivos en un directorio designado, mientras que la depuración puedo ver que las Tablas contienen una referencia a mis archivos CSV, por lo que esta parte parece estar funcionando.
para (i = 1, i <= N ELEMENTOS (Tablas), i ++,
dt = Tabla de datos ( Mesas El yo ] ) ; // JMP no puede ubicar la referencia de ninguna tabla en Tablas. dt = Las tablas [i] tampoco funcionan.
dt << Nueva Columna ( "Señal" ) ;
dt << Mover columnas seleccionadas ( { "Señal" } , Primero ) ;
: Señal << tipo de datos ( Personaje ) ;
columna = Columna ( 1 ) ;
dt << Nueva Columna ( "Tabla de origen" , Personaje ) ;
: Tabla fuente << Establecer cada valor ( dt << Obtener nombre () ) ;
dt << Mover columnas seleccionadas ( { "Tabla fuente" } , Primero ) ;
Re: almacenando tablas de datos de open () en una listaGracias por su rápida respuesta. Es un código muy elegante y solucionó mi problema perfectamente gracias.Re: almacenando tablas de datos de open () en una listaCreo que se requerirá un bucle aquí para construir la lista. los Archivos en el Directorio () La función es útil si el número de archivos varía y todos se encuentran en el mismo directorio.
Un ejemplo:
// Define path and file type
mypath = "path";
ftype = ".jmp";
// Make list of files, remove all non-matching files
flist = Files In Directory(mypath);
For(i = N Items(flist), i > 0, i--,
If(!Ends With(flist[i], ftype),
Remove From(flist, i)
)
);
// Open and create list of tables
Tables = Repeat(
i = 0;
{i++ ; Open(mypath || flist[i])};,
N Items(flist)
);
//do something with the tables
For(i = 1, i <= N Items(Tables), i++,
Close(Tables[i], No Save)
);