Salut,
Je suis nouveau dans les scripts et j'apprécierais grandement toute aide concernant les éléments suivants :
J'essaie d'écrire un script qui me permettra de regrouper et d'empiler des colonnes avec des suffixes de noms de variables. Ma table se compose de quelques colonnes avec des noms qui ne changent pas (c'est-à-dire source, cadre) et de nombreuses autres (jusqu'à des centaines) qui commencent par x, y, aire, périmètre, AR et ont le suffixe 1, 2, 3, etc. donc normalement ça ressemblerait à ça...
source, cadre, x1, y1, ar1, aire 1, angle1, périmètre1, x2, y2, ar, aire2, angle2, périmètre2, ....et ainsi de suite...
J'apprécierais grandement toute aide pour créer un script qui regrouperait tous les ex, tous les y, etc., quel que soit leur nombre. Après cela, je voudrais les empiler avec une colonne indiquant le suffixe et les autres colonnes avec les données pour x, y, aire, périmètre.
J'espère que j'ai été clair.
Je joins également un petit tableau pour faciliter la lecture.
Merci pour toute aide,
Andrés
Voici un script qui, je pense, fera ce que vous voulez:
Names Default To Here( 1 );
dt = Current Data Table();
// Get all of the column names so we can get a count of the number of
// X and Y columns found
All Columns = dt << get column names;
// Loop through and find the number of Xnn columns & Ynn columns
XList = YList = {};
For( i = 1, i <= N Items( All Columns ), i++,
If( Uppercase( Substr( All Columns[i], 1, 1 ) ) == "X" & Is Missing( Num( Substr( All Columns[i], 2 ) ) ) == 0,
Insert Into( XList, Num( Substr( All Columns[i], 2 ) ) )
);
If( Uppercase( Substr( All Columns[i], 1, 1 ) ) == "Y" & Is Missing( Num( Substr( All Columns[i], 2 ) ) ) == 0,
Insert Into( YList, Num( Substr( All Columns[i], 2 ) ) )
);
);
start = min(XList);
end = max(XList);
// Error checking
If(end!=max(YList) | start!=min(YList) | N items(XList)!=N Items(YList),
dialog("errors in column matching found"); throw());
// Create Column Lists
For(i=1,i<=nItems(XList),i++,
XList[i]=column("X" || char(XList[i]));
YList[i]=column("Y" || char(YList[i]));
);
// Combine the lists
Stack Columns = XList || YList;
// Stack the data
dtStacked =dt << Stack(
columns( Stack Columns ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Eliminate missing rows( 1 ),
Drop All Other Columns( 1 ),
Number of Series( 2 ),
Contiguous
);
// Create the Suffix column
dtStacked << New Column("Suffix",character,formula(substr(:Label,2)));
// Remove the formula and leave the calculated value
dtStacked:Suffix << delete property("formula");
// Rename the columns, and delete unneeded columns
dtStacked:Data << Set Name("X");
dtStacked:Data 2 << Set Name("Y");
dtStacked << delete columns({"Label","Label 2"});