stocker des tables de données de open () dans une listeSalut,
J'aimerais utiliser le mot clé open () pour ouvrir plusieurs feuilles de calcul et stocker ces données dans une liste.
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);
);
Question supplémentaire:
Est-il également possible d'utiliser un moteur de recherche / bibliothèque protégé par un nom d'utilisateur / mot de passe pour rechercher et télécharger des informations sur jmp?
Sincères amitiés
Anders
Re: stocker les tables de données de open () dans une listesalut,
oui ma liste ressemble à ça.
J'ai résolu le problème en implémentant une boucle while (file = Tables). Quand j'avais deux boucles faisant référence à la même liste, JMP ne pouvait pas trouver mes références. Pour moi, il semble que Tables soit déclarée en dehors de votre boucle en disant que Tables = repeat (....). Cependant, même si je déclare Tables = {} en dehors de votre boucle, il ne pourrait toujours pas être référé par ma seconde for loop . En connaissez-vous la raison?
f = N éléments (flist)
Tandis que ( F > 0 ,
je = 1 ;
dt = Ouvrir (
mon chemin || flist [ F ] ,
Importer les configurations (
Fin de ligne ( CRLF , CR , LF ) ,
Fin de champ ( Autre ( ";" ) , CSV ( 0 ) ) ,
Strip Strip ( 1 ) ,
Utiliser l'apostrophe comme guillemet ( 0 ) ,
Analyser le fichier entier ( 1 ) ,
Traiter les colonnes vides comme numériques ( 0 ) ,
CompressNumericColumns ( 0 ) ,
CompressCharacterColumns ( 0 ) ,
CompressAllowListCheck ( 0 ) ,
Étiquettes ( 1 ) ,
Noms de colonne ( 1 ) ,
Les données commencent ( 2 ) ,
Lignes à lire ( "Tout" ) ,
Règle de l'année ( "20xx" )
) ,
) ;
fichier [ je ] = dt ;
je = je + 1 ;
F--;
....
)
Re: stocker les tables de données de open () dans une listeJ'ai essayé mon code avec les fichiers .csv et cela fonctionne (JMP 12.2 pour Mac). Cela fonctionne aussi avec les fichiers invisibles.
le les tables La liste devrait ressembler à ceci:
Spectacle ( les tables )
/ *:
Tables = {DataTable ("Data 1"), DataTable ("Data 2"), DataTable ("Data 3")};
Assurez-vous que le fichier csv s’ouvre correctement en tant que table de données dans JMP (désactivez temporairement le logiciel). invisible ) et que la table n'a pas été fermée lors d'une opération précédente.
Re: stocker les tables de données de open () dans une listeSalut,
J'ai essayé d'incorporer ce code dans d'autres sections de mon script, mais je ne peux pas obtenir que dt = Tables [i] ou dt = Table de données (Tables [i]) fasse référence à mes tables dans Tableaux. Voir ci-dessous pour des exemples:
// J'ai utilisé votre code pour ouvrir tous les fichiers d'un répertoire désigné. Lors du débogage, je peux voir que Tables contient une référence à mes fichiers CSV, de sorte que cette partie semble fonctionner.
pour (i = 1, i <= N ITEMS (tables), i ++,
dt = Tableau de données ( les tables [ je ] ) ; // JMP ne peut localiser la référence d'aucune table dans Tables. dt = Les tableaux [i] ne fonctionnent pas non plus.
dt << Nouvelle colonne ( "Signal" ) ;
dt << Déplacer les colonnes sélectionnées ( { "Signal" } , À la première ) ;
: Signal << Type de données ( Personnage ) ;
col = Colonne ( 1 ) ;
dt << Nouvelle colonne ( "Table Source" , Personnage ) ;
: Table source << Définir chaque valeur ( dt << Obtenir le nom () ) ;
dt << Déplacer les colonnes sélectionnées ( { «Table source» } , À la première ) ;
Re: stocker les tables de données de open () dans une listeMerci pour votre réponse rapide. C'est un code très élégant et il a parfaitement résolu mon problème, merci.Re: stocker les tables de données de open () dans une listeJe pense qu'une boucle sera nécessaire ici pour construire la liste. le Fichiers dans le répertoire () Cette fonction est utile si le nombre de fichiers varie et qu'ils se trouvent tous dans le même répertoire.
Un exemple:
// 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)
);