我有一个来自.pkd文件的数据集,其中包含带有值标签的多个响应列。根据我引用列的方式,我会得到不同的结果。
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"});上面收到的错误是因为Column()函数将列号或名称作为带引号的字符串,因此您不能在Column()函数中使用:TestMR。
你得到两种不同的建模类型的事实是非常有趣的,并使你看起来像是指两个不同的列。
我们需要查看以下列所指的列:
Column(dt, 101);
//and
Column(dt, "TestMR");
那么,让我们尝试这样的事情:
column(dt, 101)<<SET selected=""></SET>
然后查看两个子集表,看看它是否是同一列。
在创建我可以发布的擦除文件的努力中,我最终编写了以下内容并且现在有更多问题而不是答案:
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 );我明白了
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 );我检查了列仍然命名为“TestMR”。尝试编辑并返回,仍然没有改变。似乎有一些使用“:name()”的语法,但我无法弄明白
只打开1个数据表,并在dt =当前数据表()中编码。有趣的是,当我运行代码的最后一部分时,我得到两种不同的建模类型
Column(dt, 101) << get modeling type = "Multiple Response";
Column(dt, :TestMR) << get modeling type = "Ordinal";
从您的代码片段中很难说出来,但猜测是您在每种情况下都没有引用相同的数据表。
你有多个数据表打开吗?
尝试确定两个引用的范围,以确保从同一数据表中获取它们。
dt1=open("$SAMPLE_DATA\Big Class.jmp");
dt2=open("$SAMPLE_DATA\Fitness.jmp");
show(column(dt1,2)<<GET name=""></GET>