Salut,
J'ai le script suivant dans lequel j'ouvre deux tables de données que je dois traiter avant de les utiliser pour l'analyse. L'un des ensembles de données nécessite une transposition de la colonne 3 (:Inoculum...) à la fin du tableau, colonne 16 (Test d'étanchéité de contrôle positif) comme indiqué ci-dessous. Cependant, je voudrais rendre l'exécution automatique car les noms ne sont pas pertinents mais la structure de la table est toujours la même. Quelqu'un pourrait-il nous faire part de ses commentaires sur la façon de le faire fonctionner ? Merci
dt1 = Open(
"C:\Users\ioliveira\Desktop\data\DEF-BMP Curves.csv",
columns(
New Column( "Sample", Character, "Nominal" ),
New Column( "Hour", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Average", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Minimum", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Maximum", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
dt2 = Open(
"C:\Users\ioliveira\Desktop\data\DM for BMP 31.07.18.xlsx",
Worksheets( "Protocol" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 3 ),
Data Starts on Row( 4 ),
Data Starts on Column( 1 ),
Data Ends on Row( 6 ),
Data Ends on Column( 16 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
dt2 << Transpose(
columns(
:Inoculum,
:Positive Control,
:Name( "FB Powder 2/5 1.05.18" ),
:Economizer WEL 6.7 bar 15.05.18,
:Chicken muck black REL 08.05.18,
:Chicken muck white REL 08.05.18,
:Name( "Rye Ag-Bag EEL" ),
:M301,
:M302,
:M303,
:Name( "WEL ECON 24/7" ),
:Name( "WEL STRAW 24/7" ),
:Name( "WEL STRAW 20/6" ),
:Name( "Positive Control Leak-Test" )
),
Label( :Sample name ),
Output Table( "dt3" )
);
Merci pour le retour.
J'ai essayé d'utiliser les différents exemples mais à l'exception du troisième script qui effectue la distribution de la table de données, il n'y a aucune différence lors de l'exécution du premier script et du deuxième. Est-ce correct ? Je pensais que le script supprimerait les colonnes 1 et 2 mais cela ne semble pas s'afficher.
Est-ce que ce sont les noms de colonnes qui ne sont pas pertinents ou les noms de tables ?
Vous pouvez obtenir une liste des noms des colonnes de votre table avec la fonction Get Column Names().
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
n = dt << Get Column Names();
Show( n );
Je pense que vous trouverez des listes utiles pour ce que vous essayez de scripter.
Nous pouvons utiliser Remove() sur la liste n pour supprimer 2 colonnes à partir de la colonne 1. Pour nous donner la liste, m, des colonnes que nous souhaitons utiliser.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
n = dt << Get Column Names();
m = Remove( n, 1, 2 );
Show( m );
Nous pouvons maintenant utiliser cette liste de colonnes. À titre d'exemple simple, nous tracerons les distributions des colonnes.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
n = dt << Get Column Names();
m = Remove( n, 1, 2 );
dt << Distribution( Y( Eval( m ) ));
Notez que nous devons utiliser la fonction Eval() pour évaluer l'argument afin que Distribution() reconnaisse m comme une liste de noms de colonnes.
Vous devriez pouvoir utiliser la même approche pour définir les colonnes que vous devez transposer, si c'est ce que vous deviez faire.
J'espère que cela aide.
Phil
Je crois que c'est la solution dont vous avez besoin
colList = dt2 << get column names;
colList = remove( colList, 1,3);
dt3 = dt2 << Transpose(
columns(
eval(colList)
),
Label( :Sample name ),
Output Table( "dt3" )
);