如何根据 dt2 中的唯一值列表从 dt1 中选择和排除行?所以我使用 dt1 运行 t 检验分析(按 ChartID 的 Chamber 平均值),然后创建所有 p 值的组合数据表 dt2。 我想将其过滤到 p<=0.05 的行,然后创建一个独特的、唯一的这些低 pValue 列表,并使用它来重新绘制仅包含低 PValue 的图表。
我现在有点卡住了,试图链接回原来的 dt1。 最终选择似乎不起作用的地方。
还要注意,如果有更好的方法来选择,排除,加入回源dt,请告诉我。 我试过总结,关联数组。
//creating the table of pValues
dt2 = Report( ow[1] )["Means Comparisons", "Comparisons for all pairs using Tukey-Kramer HSD","Ordered Differences Report"][Table Box( 1 )] << Make Combined Data Table;
dt2 << set name( "pValue PairWise by Channel Tukey")
//select and exclude high pVals
dt2 << select where("p-Value"n > 0.05);
dt2 << exclude;
//get list of remaining Unique Chart_ID's
summarize(uniqueVals=by(CHART_ID));
//trying to select on the original source data
dt1 << select where( contains( uniqueVals, :CHART_ID));
//then need to invert and exclude分析脚本回复:如何根据 dt2 中的唯一值列表从 dt1 中选择和排除行?uniqueVals 变量必须具有与 dt1 相同的数据类型,因此您可以选择要更改的数据类型。 如果您不需要将 Chart_ID 作为数字数据类型,在这种情况下,我很可能会将其更改为 dt1 中的字符。
回复:如何根据 dt2 中的唯一值列表从 dt1 中选择和排除行?@jthi
所以在做总结之后,看起来 Chart_ID 是 Numeric Continuous,而原始源数据 dt1 Chart_ID 是 numeric Nominal,而 pvalue 表 dt2 是 Character Nominal。
//extra, just to look at the data
dtUnique = New Table( "uniqueVals less 0.05");
dtUnique << New Column( "ChannelID", Values(uniqueVals));

回复:如何根据 dt2 中的唯一值列表从 dt1 中选择和排除行?@brady_brady
好问题。 所以我的源数据 (dt1) 将 Chart_ID 作为数字标称。 在创建图表并运行 t 检验然后输出组合数据表 (dt2) 之后,Chart_ID 列是字符标称。
回复:如何根据 dt2 中的唯一值列表从 dt1 中选择和排除行?我的第一个猜测是字符值和数值不匹配。
下面是一个大类的例子:
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
ow = Oneway(Y(:height), X(:age), All Pairs(1));
dt2 = Report(ow)["Means Comparisons", "Comparisons for all pairs using Tukey-Kramer HSD","Ordered Differences Report"][Table Box( 1 )] << Make Combined Data Table;
dt2 << set name( "pValue PairWise by Channel Tukey");
dt2 << select where(:"p-Value"n > 0.05);
dt2 << exclude;
summarize(dt2, uniqueVals=by(:level)); //check out the type of :level column, could be character
//convert to numbers OR you could convert values in dt1 to characters
For( i = 1, i <= N Items(uniqueVals ), i++,
uniqueVals[i] = Num(uniqueVals[i] )
);
dt1 << select where(Contains(uniqueVals, :age));回复:如何根据 dt2 中的唯一值列表从 dt1 中选择和排除行?您的图表 ID 是偶然的数字吗? Summarize 中的 by() 结果是一个字符串列表——即使原始组标识符是数字也是如此。 这将防止那些列表元素(同样是字符串)与原始表中的任何值(数字)匹配。
??
干杯,
布雷迪