Ich habe einen Datensatz, der aus einer .pkd-Datei mit mehreren Antwortspalten mit Wertelabels stammt. Je nachdem, wie ich die Spalte referenziere, erhalte ich unterschiedliche Ergebnisse.
Show( Column( 101 ) << get property( "value labels" ) );
Show( Column( 101 ) << get name );
Show( Column( :name( "TestMR" ) ) << get property( "value labels" ) );
//results
Column(101) << get property("value labels") = Value Labels({"10" = "A", "100" = "B", "101" = "C"});
Column(101) << get name = "TestMR";
Column(:TestMR) << get property("value labels") = Value Labels({-2 = "Not at all Important (-2)", -1 = "Not Important (-1)", 0 = "Neither Important nor Unimportant (0)", 1 = "Important (1)", 2 = "Effective Base Used For Stat Testing Weighted Data", 9 = "Not answer"});Der Fehler, den Sie oben erhalten haben, besteht darin, dass die Column () - Funktion entweder eine Spaltennummer oder einen Namen als Zeichenfolge in Anführungszeichen verwendet. Daher können Sie: TestMR in der Column () - Funktion nicht verwenden.
Die Tatsache, dass Sie zwei verschiedene Modellierungsarten erhalten, ist sehr interessant und lässt den Anschein erwecken, als würden Sie sich auf zwei verschiedene Spalten beziehen.
Wir müssen uns die Spalten ansehen, auf die Bezug genommen wird:
Column(dt, 101);
//and
Column(dt, "TestMR");
Lass uns also so etwas versuchen:
column(dt, 101)<<SET selected=""></SET>
Sehen Sie sich dann die beiden Teilmengen-Tabellen an und prüfen Sie, ob es sich um dieselbe Spalte handelt.
Um eine gescrubbte Datei zu erstellen, die ich posten kann, habe ich am Ende Folgendes geschrieben und habe jetzt mehr Fragen als Antworten:
dt = Current Data Table();
Show( Column( dt, 101 ) << get modeling type );
Show( Column( dt, "TestMR" ) << get modeling type );
Show( Column( dt, :name("TestMR") ) << get modeling type );
For( a = 1, a <= 550, a++,
If( a != 101,
a1 = Random Integer( 26 );
a2 = Random Integer( 26 );
a3 = Random Integer( 26 );
a4 = Random Integer( 26 );
a5 = Random Integer( 26 );
a6 = Random Integer( 26 );
a7 = Random Integer( 26 );
a8 = Random Integer( 26 );
alpha = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W",
"X", "Y", "Z"};
temp = alpha[a1] || alpha[a2] || alpha[a3] || alpha[a4] || alpha[a5] || alpha[a6] || alpha[a7] || alpha[a8];
Column(dt, a ) << set name( temp );
)
);
Show( Column( dt, 101 ) << get modeling type );
Show( Column( dt, "TestMR" ) << get modeling type );
Show( Column( dt, :name("TestMR") ) << get modeling type );und ich bekomme
Column(dt, 101) << get modeling type = "Multiple Response";
Column(dt, "TestMR") << get modeling type = "Multiple Response";
Column(dt, :TestMR) << get modeling type = "Ordinal";
Column(dt, 101) << get modeling type = "Multiple Response";
Column(dt, "TestMR") << get modeling type = "Multiple Response";
could not find column in access or evaluation of 'Column' , Column/*###*/(dt, :TestMR)
In the following script, error marked by /*###*/
dt = Current Data Table();
Show( Column( dt, 101 ) << get modeling type );
Show( Column( dt, "TestMR" ) << get modeling type );
Show( Column( dt, :TestMR ) << get modeling type );
For( a = 1, a <= 550, a++,
If( a != 101,
a1 = Random Integer( 26 );
a2 = Random Integer( 26 );
a3 = Random Integer( 26 );
a4 = Random Integer( 26 );
a5 = Random Integer( 26 );
a6 = Random Integer( 26 );
a7 = Random Integer( 26 );
a8 = Random Integer( 26 );
alpha = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
temp = alpha[a1] || alpha[a2] || alpha[a3] || alpha[a4] || alpha[a5] ||
alpha[a6] || alpha[a7] || alpha[a8];
Column( dt, a ) << set name( temp );
)
);
Show( Column( dt, 101 ) << get modeling type );
Show( Column( dt, "TestMR" ) << get modeling type );
Show( Column/*###*/(dt, :TestMR) << get modeling type );Ich habe überprüft, dass die Spalte immer noch "TestMR" heißt. Versucht, es zu bearbeiten und zurück zu gehen, ändert sich immer noch nicht. Es scheint etwas mit der Syntax von ": name ()" zu geben, aber ich kann es nicht herausfinden
Nur eine Datentabelle ist geöffnet und in einer Tabelle dt = current () codiert. Interessant, wenn ich den letzten Code ausführe, bekomme ich zwei verschiedene Modellierungsarten
Column(dt, 101) << get modeling type = "Multiple Response";
Column(dt, :TestMR) << get modeling type = "Ordinal";
Es ist schwer zu erkennen an Ihrem Code-Snippet, aber Sie vermuten, dass Sie nicht in jedem Fall auf dieselbe Datentabelle verweisen.
Haben Sie mehr als eine Datentabelle geöffnet?
Probieren Sie beide Referenzen aus, um sicherzustellen, dass sie aus derselben Datentabelle stammen.
dt1=open("$SAMPLE_DATA\Big Class.jmp");
dt2=open("$SAMPLE_DATA\Fitness.jmp");
show(column(dt1,2)<<GET name=""></GET>