Problema del filtro dati utilizzando per cicloCiao a tutti
Ora ho problemi con i filtri per filtrare i dati. Ho 2 problemi qui:
Problema 1 : Come posso convertire @ in carattere ?? Perché quando eseguo lo script, viene fuori un errore.
Gruppo(
: Nome ("I_P2A .6 / .045 Avg @ ET"),
: Nome ("I_N2A .3 / .045 Avg @ ET"),
: Nome ("I_P2G_G_0.6 / 0.06 Avg @ ET"),
: Nome ("I_P2HG_0.6 / 0.06 Avg @ ET")
),
Freq ("Nessuno"),
Peso ("Nessuno")
Problema 2: filtro dati utilizzando il ciclo.
È possibile che io voglia raggruppare i 4 parametri seguenti in un unico nome (dichiarare il nome)?
Perché nel mio set di dati, il nome della colonna è tale: I_P2A .6 / .045 Avg @ ET
I_N2A .3 / .045 Avg @ ET
I_P2G_G_0.6 / 0.06 Avg @ ET
I_P2HG_0.6 / 0.06 Avg @ ET
Quindi, il mio scopo è come posso fare 4 colonne in un solo nome, perché quando scrivo lo script, ho solo bisogno di scrivere i nomi delle variabili che dichiaro (4 parametri), poi si automatizzerà per sapere che questi 4 parametri sono all'interno questo nome di variabile. È possibile raggruppare in un unico nome?
dt = open("---------");
family_device = Data Table("--------") << Summary (Group(:Family Device), Freq("None"), Weight("None"));
parameter = Data Table("---------") << Summary(
Group(
:Name( "I_P2A .6/.045 Avg @ ET" ),
:Name( "I_N2A .3/.045 Avg @ ET" ),
:Name( "I_P2G_G_0.6/0.06 @ ET" ),
:Name( "I_P2HG_0.6/0.06 @ ET" )
),
Freq( "None" ),
Weight( "None" )
);
For(ifamily_device = 1, ifamily_device <= NRows(family_devices), ifamily_device++,
thisFamily_Device = family_devices : Family Device[ifamily_device];
For(iparameter = 1, iparameter <= Nrows(parameters), iparameter++,
thisParameter = parameters: (column name in dataset-how i convert all these 4 parameters into one group name?)[iparameter];
Group(
:Name( "I_P2A .6/.045 Avg @ ET" ),
:Name( "I_N2A .3/.045 Avg @ ET" ),
:Name( "I_P2G_G_0.6/0.06 Avg @ ET" ),
:Name( "I_P2HG_0.6/0.06 Avg @ ET" )
)
);
);Grazie.
Ri: Problema del filtro dati utilizzando per ciclo
Ri: Problema del filtro dati utilizzando per cicloPenso di usare l'immagine forse meglio.
Diciamo che ora ho S_GX, e uso i parametri I_P2A GSVT .6 / .045 Avg e I_N2A GSVT .3 / .045 Avg. Ma ora ho bisogno di riassumere dal mio set di dati, il che significa che qui ho bisogno di ricapitolare S_GX utilizzerà due parametri che sono io _P2A GSVT .6 / .045 Avg e I_N2A GSVT .3 / .045 Avg.etc ...
Grazie
Ri: Problema del filtro dati utilizzando per cicloScusa per non spiegare chiaramente cosa voglio fare.
In realtà quello che voglio fare è, voglio fare il riepilogo in base al tipo di prodotto, ad esempio: Ora ho prodotto a, b, c, d, e e ognuno ha il proprio elenco di parametri, ad esempio: I_P2A. 6 / .045 Avg @ ET, I_N2A .3 / .045 Avg @ ET, I_P2G_G_0.6 / 0.06 Avg @ ET, I_P2HG_0.6 / 0.06 Avg @ ET ecc. Quindi ora voglio fare il filtro o magari utilizzare selezionare la cella corrispondente per fare il sommario del prodotto a uso I_P2A .6 / .045 Avg @ ET, il prodotto b usa I_N2A .3 / .045 Avg @ ET e così via. e ognuno dei prodotti ha più di un parametro. Perché dopo di ciò ho bisogno in base al risultato di fare i grafici. quindi i miei dati sono parecchio, quindi ho bisogno di suddividere i dati prima di fare i grafici di variabilità. E ora la mia condizione è che non so come fare lo script per fare il riassunto che spiego. E inoltre non posso anche hardcoded.
Quindi, puoi darmi qualche suggerimento?
GrazieRi: Problema del filtro dati utilizzando per cicloSembra che io non capisca quello che vuoi. Forse qualcuno ha una visione migliore di me.
Ri: Problema del filtro dati utilizzando per cicloUna domanda da parte mia:
Secondo il tuo codice, perché dobbiamo impostare il nome della colonna (rinominare la colonna)? Perché nel mio caso, il nome della colonna come: (I_P2A .6 / .045 Avg @ ET, I_N2A .3 / .045 Avg @ ET, I_P2G_G_0.6 / 0.06 Avg @ ET, I_P2HG_0.6 / 0.06 Avg @ ET-Ho ancora bisogno di questo come nome della mia colonna), il mio problema è come raggruppare 4 diverse colonne per diventare un nome per poterle dichiarare facilmente al codice sottostante.
Perché alla fine ho bisogno di fare il riepilogo in base al dispositivo della famiglia e ai parametri (4 diversi nomi di colonne)
Grazie.Ri: Problema del filtro dati utilizzando per cicloGli errori nel codice sono sintomi di esecuzione di troppi passaggi nel JSL, in modo tale da farti confondere su quali problemi causano i problemi. JSL fornisce alcune grandi cose per aiutare a scorrere il codice per vedere quali sono i veri problemi. La prima è la capacità di evidenziare qualsiasi sezione di codice e di eseguire solo il codice evidenziato. E l'abilità di passare con il mouse su una variabile e vedere quale sia l'ultimo valore per essa. Un ambiente più formale è quello di utilizzare JSL Debugger, che ti consente di passare riga per riga attraverso il codice per convalidare la logica e i calcoli.
Di seguito è riportata una valutazione del codice che hai fornito. Quello che vedrete è che gli errori nel codice provengono semplicemente dal non essere abbastanza attento con i nomi delle variabili.
// This line of code has nothing to do with the script, so I have commented it out
//dt = open("---------");
// For testing purposes,a data table needs to be opened and setup with the columns used in the script
// Open the Big Class data table
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// Now modify the data table to make it look like the script wants
// Delete the "name" column
dt << delete columns( "name" );
// The "sex" column will become the "Family Device" column
dt:sex << set name( "Family Device" );
// The "age", "weight", and "height" columns will be changed to three of the other columns required
dt:age << set name( "I_P2A .6/.045 Avg @ ET" );
dt:height << set name( "I_N2A .3/.045 Avg @ ET" );
dt:weight << set name( "I_P2G_G_0.6/0.06 @ ET" );
// Create the final column as a simple formula column
dt << New Column( "I_P2HG_0.6/0.06 @ ET", formula( Random Normal() ) );
// Now just remove the formula to make the values static(just a simple step to make the table clea)n
dt:Name( "I_P2HG_0.6/0.06 @ ET" ) << delete property( "Formula" );
// The sample data table is complete
// Now run the script
// The creation of the first summary data table....only the data table's name was substituted
// The summary works without error
family_device = Data Table( "Big Class" ) << Summary( Group( :Family Device ), Freq( "None" ), Weight( "None" ) );
// The creation of the second summary data table....once again only the data table name was changed
// There is no issue with the "@" being in the column names
// The summary works without error
parameter = Data Table( "Big Class" ) << Summary(
Group( :Name( "I_P2A .6/.045 Avg @ ET" ), :Name( "I_N2A .3/.045 Avg @ ET" ), :Name( "I_P2G_G_0.6/0.06 @ ET" ), :Name( "I_P2HG_0.6/0.06 @ ET" ) ),
Freq( "None" ),
Weight( "None" )
);
// There are issues here. The first one is that in the "NRows()" function, a variable by the
// name of "family_devices" is used, and there is not a variable by that name. The name of
// the variable is "family_device". When this code is run, that error is clearly listed in the Log
//For(ifamily_device = 1, ifamily_device <= NRows(family_devices), ifamily_device++,
For( ifamily_device = 1, ifamily_device <= N Rows( family_device ), ifamily_device++,
// Once again the reference to "family_device" is made
//thisFamily_Device = family_devices : Family Device[ifamily_device];
thisFamily_Device = family_device:Family Device[ifamily_device];
// For a third time, an invalid variable name has been specified. In this case, "Parameters"
// instead of "parameter"
//For(iparameter = 1, iparameter <= Nrows(parameters), iparameter++,
For( iparameter = 1, iparameter <= N Rows( parameter ), iparameter++,
// I am a bit confused on this one. First off, "parameters" instead of "parameter" is used, however
// the grouping question could be interpreted a couple of ways, so what I have done is to just
// concatenate the columns together
/*thisParameter = parameters: (column name in dataset-how i convert all these 4 parameters into one group name?)[iparameter];
Group(
:Name( "I_P2A .6/.045 Avg @ ET" ),
:Name( "I_N2A .3/.045 Avg @ ET" ),
:Name( "I_P2G_G_0.6/0.06 Avg @ ET" ),
:Name( "I_P2HG_0.6/0.06 Avg @ ET" )
)*/
thisParameter = Char( parameter:Name( "I_P2A .6/.045 Avg @ ET" )[iparameter] ) || Char( parameter:Name( "I_N2A .3/.045 Avg @ ET" )[iparameter] ) ||
Char( parameter:Name( "I_P2G_G_0.6/0.06 @ ET" )[iparameter] ) || Char( parameter:Name( "I_P2HG_0.6/0.06 @ ET" )[iparameter] );
show(thisFamily_Device, thisParameter );
);
);