Je travaille avec des données sur les processus de fabrication chimique (pensez à la température, à la pression, au débit, à la composition, etc.) qui sont récupérées à partir d'un historique des processus. Chaque variable possède à la fois un nom d'équipement (tag) comme : LP1LCA0311 et un descripteur (glossaire) comme : F-301 Level. Lors de l'exportation automatique d'Excel vers JMP, le glossaire est utilisé comme nom de colonne. Le glossaire est créé par des humains et n'est donc généralement pas cohérent. Il est souvent judicieux d'utiliser un alias au lieu du glossaire : fonctionnellement, le F-301 est le dépoussiéreur basse pression ; alias = LVL.LP.DC.
Nous construisons des tableaux de bord pour surveiller nos processus. Voici un exemple:
- six réacteurs avec 31 colonnes de mesure + horodatage
- vous devez renommer les colonnes du glossaire au format d'alias standard comme : RX#.LVL ; RX#.F.Alimentation ; etc.
- le format standard permettra un empilage facile : peut créer une colonne nommée Reactor qui utilise les fonctions LEFT() ou WORD() ; renommez la colonne Données à l’aide de la fonction RIGHT().
J'aimerais:
Utilisez une deuxième table de données (DT2) pour renommer les colonnes de la première table de données (DT1)
DT2 contient 2 colonnes : Old.Name = noms de colonnes DT1 ; New.Name = nouveaux noms de colonnes saisis manuellement (alias)
Le script doit prendre Old.Name et l'insérer dans la nouvelle propriété de colonne = "OldName" dans DT1
Le script renomme ensuite les colonnes DT1 en utilisant DT2 New.Name
L'extrait de code ci-dessous de Jerry Cooper montre comment effectuer l'étape de propriété de colonne :
// Script to take units from column name and assign to column property
// received from Jerry Cooper of SAS 03-Mar-2014
// Data table should have column names of form: Name|units
// Script assumes that units are after "|"
// Easy to set up header row in Excel to concatenate name and units
Names Default To Here( 1 );
dt = Current Data Table();
mycols = dt << Get Column Names( string );
For( i = 1, i <= N Items( mycols ), i++,
If( Contains( mycols[i], "|" ),
myunits = Substr( mycols[i], Contains( mycols[i], "|", -1 ) + 1 );
newname = Substr( mycols[i], 1, Contains( mycols[i], "|", -1 ) - 1 );
Column( i ) << Set Name( newname );
Column( i ) << Set Property( "Units", eval(myunits) );
)
);
Comment puis-je scripter les étapes pour renommer les colonnes dans DT1
Quelqu'un a-t-il une meilleure façon d'accomplir ce que je veux ?
Ouah! cela a fonctionné d'un seul coup ! Merci!!!
Essayez ceci et voyez si c'est ce que vous voulez
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt2 = New Table( "Lookup",
Add Rows( 1 ),
New Column( "Old Name", Character, "Nominal", Set Values( {"Sex"} ) ),
New Column( "New Name", Character, "Nominal", Set Values( {"Gender"} ) )
);
ColList = dt << get column names( string );
For( i = 1, i <= N Items( ColList ), i++,
FoundName = dt2 << get rows where( Uppercase( :OldName ) == Uppercase( ColList[i] ) );
If( N Rows( FoundName ) > 0,
Column( dt, ColList[i] ) << set property( "Old Name", Eval( ColList[i] ) );
Column( dt, ColList[i] ) << set name( dt2:New Name[FoundName[1]] );
);
);