Classement des fichiers dans un dossierGens,
J'ai une liste de fichiers que je veux concaténer (voir première figure).La préférence serait de concaténer comme indiqué, c'est-à-dire "surf_12275-87-1..., "surf_12275-87-2...", etc. Cependant, lorsque je forme une liste à partir des fichiers du dossier (après avoir supprimé les caractères inutiles), la séquence est "12275-87- 1 , 12275-87- dix , 12275-87- 11 ". Cependant, la préférence serait "12275-87- 1 , 12275-87- 2 , 12275-87- 3 ". De toute évidence, le moyen le plus simple de contourner le problème consiste à me faire parvenir les fichiers sous la forme " -01, -02, ... -10, -11", mais ce ne sera pas toujours le cas.
Existe-t-il un moyen simple d'obtenir les fichiers dans le format de classement préféré afin que je puisse ouvrir et concaténer de bas en haut ? Script actuel joint.
s_path = {};
X_path = {};
f1 = Files In Directory( SD1, recursive(1));
For( i = 1, i <= N Items( f1 ), i++,
b = f1[i];
c = Contains Item(b, "surf", "_");
If( c==1,
d = Word(2, b, "_");
Insert Into(s_path,d),
Insert Into(X_path, d)
)
);
Show(s_path);


ScriptRe : Classer des fichiers dans un dossierLa table de données JMP semble utiliser le tri numérique si vous avez des colonnes de type de modélisation ordinal, vous pouvez donc utiliser cette boucle ou for.
Names Default To Here(1);
a = {
"surf_12275_87-1_r250",
"surf_12275_87-2_r250",
"surf_12275_87-3_r250",
"surf_12275_87-4_r250",
"surf_12275_87-5_r250",
"surf_12275_87-6_r250",
"surf_12275_87-7_r250",
"surf_12275_87-8_r250",
"surf_12275_87-9_r250",
"surf_12275_87-10_r250",
"surf_12275_87-11_r250",
"surf_12275_87-12_r250",
"surf_12275_87-13_r250",
"surf_12275_87-20_r250",
"surf_12275_87-22_r250"
};
a = Sort List(a); //break the ordering
Show(a);
dt = New Table("",
New Column("SortList", Character, Ordinal, Set Values(a)), private
);
dt << Sort(By(:SortList), Order(Ascending), Replace Table);
b = dt:SortList << Get Values;
Close(dt, no save);
Show(b);
c = {};
For(i = 1, i <= N Items(a), i++,
Insert Into(c, a[i], Num(Words(a[i], "-_")[4]));
);
Show(c);Ceux-ci pourraient donner une idée de la façon d'aborder le problème.
Re : Classer des fichiers dans un dossierVoici une façon de trier la liste, en prenant les éléments des noms et en les séparant en différentes colonnes dans une table de données, en changeant les éléments numériques en colonnes numériques, puis en triant la table de données par tous les éléments.
names default to here(1);
f1={"surf_12275-87-11_r250_50x_mean_2.jmp", "surf_12275-87-2_r250_50x_mean_2.jmp",
"surf_12275-87-10_r250_50x_mean_2.jmp", "surf_12275-87-4_r250_50x_mean_2.jmp",
"surf_12275-87-5_r250_50x_mean_2.jmp", "surf_12275-87-6_r250_50x_mean_2.jmp",
"surf_12275-87-7_r250_50x_mean_2.jmp", "surf_12275-87-8_r250_50x_mean_2.jmp",
"surf_12275-87-9_r250_50x_mean_2.jmp", "surf_12275-87-1_r250_50x_mean_2.jmp",
"surf_12275-87-3_r250_50x_mean_2.jmp"};
dt = new table("Sort Table",
add rows(nitems(f1)),
new column("File Names", character)
);
dt:File Names << set values(f1);
// Create and populate separate columns for each element in the names
sortList = {};
i=1;
While(word(i,f1[1],"_-.") != "",
dt<<NEW column=""></NEW>
Je suis sûr que d'autres membres peuvent avoir des méthodes alternatives.
Re : Classer des fichiers dans un dossierJarmo,
Merci beaucoup de m'avoir appris une nouvelle compétence. J'ai essayé toutes vos approches suggérées pour améliorer ma capacité de codage. Voici ma dernière révision qui fait exactement ce que je veux.
Merci encore
Daniel
f1 = Files In Directory( SD1, recursive(1));
f1 = Sort List(f1);
dt = New Table("",
New Column("SortList", Character, Ordinal, Set Values(f1)), private
);
dt << Sort( By(:SortList), Order(Ascending), Replace Table);
b = dt:SortList << Get Values;
Close(dt, no save);
For( i=1, i <= N Items(b), i++,
file_1 = Open(SD1 || b[1]);
If(i > 1,
file_nxt = Open(SD1 || b[i], Private);
file_1 << Concatenate(file_nxt, Append to first table);
)
);
file_1 << Save(SD1 || "All Summary");Re : Classer des fichiers dans un dossierJim,
Je ne peux pas vous dire à quel point cette approche était perspicace pour un autre problème (non lié à ce fil) que j'avais. C'est-à-dire des noms de fichiers avec des arrangements "d'éléments" imprévus. Au moins, je suis capable de disséquer les noms de fichiers et de "réorganiser" pour un étiquetage cohérent.
Merci encore pour votre aide.
Daniel