Problem der Datenfilterung mit for-SchleifeHallo zusammen
Ich habe jetzt ein Problem, die Daten herauszufiltern. Ich habe hier 2 Probleme:
Problem 1 : Wie kann ich @ in Zeichen umwandeln? Denn wenn ich das Skript starte, kommt es zu einem Fehler.
Gruppe(
: 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")
)
Freq ("Keine"),
Gewicht ("keine")
Problem 2: Datenfilter mithilfe der Schleife.
Ist es möglich, dass ich die 4 untenstehenden Parameter zu einem Namen zusammenfassen möchte (Namen deklarieren)?
In meinem Datensatz sind folgende Spaltennamen: I_P2A .6 / .045 Avg @ ET
I_N2A .3 / .045 Avg @ ET
I_P2G_G_0,6 / 0,06 Durchschn. ET
I_P2HG_0.6 / 0.06 Durchschn. ET
Mein Zweck ist also, wie kann ich 4 Spalten in einen Namen umwandeln, denn wenn ich das Skript ausschreibe, muss ich nur die Variablennamen schreiben, die ich deklariere (4 Parameter). Dann wird es automatisch wissen, dass diese 4 Parameter im Inneren sind dieser Variablenname. Kann man sich zu einem Namen zusammenfassen?
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" )
)
);
);Vielen Dank.
Betreff: Problem des Datenfilters mit for-Schleife
Betreff: Problem des Datenfilters mit for-SchleifeIch denke, ich benutze das Bild vielleicht besser.
Nehmen wir an, ich habe S_GX und verwendet die Parameter I_P2A GSVT .6 / .045 Avg und I_N2A GSVT .3 / .045 Avg. Aber jetzt muss ich aus meinem Datensatz zusammenfassen, was hier bedeutet, dass ich zusammenfassen muss, dass S_GX zwei Parameter verwendet, die ich sind _P2A GSVT .6 / .045 Avg und I_N2A GSVT .3 / .045 Avg.etc ...
Vielen Dank
Betreff: Problem des Datenfilters mit for-SchleifeTut mir leid, dass ich nicht klar erkläre, was ich tun möchte.
Eigentlich möchte ich die Zusammenfassung anhand des Produkttyps zusammenfassen, zum Beispiel: Jetzt habe ich die Produkte a, b, c, d, e und jedes Produkt hat seine eigene Parameterliste, zB: I_P2A. 6 / .045 Durchschn. ET, I_N2A .3 / .045 Durchschn. ET, I_P2G_G_0.6 / 0.06 Durchschn. ET, I_P2HG_0.6 / 0.06 Durchschn. ET usw. Jetzt möchte ich Filter verwenden oder möglicherweise eine passende Zelle auswählen, um die Zusammenfassung des Produkts a use I_P2A .6 / .045 Avg @ ET und Produkt b das Produkt I_N2A .3 / .045 Avg @ ET usw. zu verwenden. und jedes Produkt hat mehr als einen Parameter. Denn danach brauche ich die Ergebnisse anhand der Ergebnisse. Dann sind meine Daten ziemlich viel, also muss ich die Daten subsetieren, bevor ich die Variabilitätsdiagramme durchführe. Und jetzt ist meine Bedingung, dass ich nicht weiß, wie ich das Skript ausführen soll, um die Zusammenfassung zu machen, die ich erkläre. Und ich kann auch nicht hart codieren.
Können Sie mir also einen Vorschlag machen?
Vielen DankBetreff: Problem des Datenfilters mit for-SchleifeEs scheint, dass ich nicht verstehe, was Sie wollen. Vielleicht hat jemand eine bessere Einsicht, die ich mache.
Betreff: Problem des Datenfilters mit for-SchleifeEine Frage von mir:
Warum müssen wir gemäß Ihrem Code den Spaltennamen festlegen (die Spalte umbenennen)? Denn in meinem Fall ist der Name der Spalte wie: (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-ich brauche es immer noch als Spaltennamen), mein Problem ist, wie man 4 verschiedene Spaltennamen zu einem Namen zusammenfasst, damit ich sie einfach unter dem folgenden Code deklarieren kann.
Schließlich muss ich die Zusammenfassung anhand des Familiengeräts und der Parameter vornehmen (4 unterschiedliche Spaltennamen).
Vielen Dank.Betreff: Problem des Datenfilters mit for-SchleifeDie Fehler in Ihrem Code sind Symptome, wenn zu viele Schritte in der JSL ausgeführt werden, sodass Sie verwirrt werden, welche Probleme welche Probleme verursachen. JSL bietet einige großartige Dinge, die Ihnen beim Durchlaufen des Codes helfen, um zu sehen, was die wirklichen Probleme sind. Die erste Möglichkeit besteht darin, jeden Codeabschnitt hervorzuheben und nur den hervorgehobenen Code auszuführen. Und die Fähigkeit, einfach über eine Variable zu schweben und zu sehen, was der letzte Wert für sie ist. Eine formalere Umgebung ist die Verwendung des JSL-Debuggers, mit dem Sie den Code Zeile für Zeile schrittweise durchlaufen können, um die Logik und die Berechnungen zu überprüfen.
Nachfolgend finden Sie eine Bewertung des von Ihnen angegebenen Codes. Sie werden sehen, dass die Fehler im Code darauf zurückzuführen sind, dass Sie mit den Variablennamen nicht vorsichtig genug sind.
// 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 );
);
);