基于列列表创建数据子集你好,
我有一个包含许多数据列的大型数据文件。 我想创建一种自动方法,根据列列表对原始数据进行子集化。
如果这个表是我的原始数据
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| # | # | # | # | # | # | # | # | # | # |
| # | # | # | # | # | # | # | # | # | # |
我想要子集的列列表可能是 [1,4,6,9]
我想生成一个如下所示的新表
我不能只是硬编码要采用的列的原因是列表会经常更新,所以我想要一种更免提的方式来处理这个问题。
如果我需要提供更多信息,请告诉我。
谢谢!
回复:根据列列表创建数据子集eval(evalexpr(
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(
As Column(expr(MT_Col_Names[1])), As Column(expr(MT_Col_Names[2])) ), Invisible);
));
回复:根据列列表创建数据子集也许尝试一下
eval(evalexpr((
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(
As Column(expr(MT_Col_Names[1])), As Column(expr(MT_Col_Names[2])) ), Invisible);
));
))
回复:根据列列表创建数据子集我认为您没有必要枚举 MT_Col_Names 中的所有项目或将它们包装在 Column() 中。“MT_Col_Names”里面有什么类型的数据?
这是一个工作示例,其中包含代表我要保留的列名称的字符串列表:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Rows({1,2,3});
sub_cols = {"name", "age", "sex"}; //same role as MT_Col_Names
dt2 = dt << Subset(selected rows(1), columns(sub_cols));回复:根据列列表创建数据子集你好,
当我使用以下方法时,这对我不起作用:
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(Column(MT_Col_Names[1]), Column(MT_Col_Names[2]), Column(MT_Col_Names[3]), Column(MT_Col_Names[4]), Column(MT_Col_Names[5]), Column(MT_Col_Names[6])), Invisible);
错误是:

如果我改变'列'到“作为专栏” ,它有效(没有错误),但所有列都显示......
谢谢你的帮助,
尼尔
回复:根据列列表创建数据子集这可能真的很容易,但我对你的清单感到困惑。您说您无法对要使用的列进行硬编码,因为它会发生变化,但是当列表更新时,不需要有人最终枚举要使用的列吗?否则,该列表从何而来? 如果脚本顶部有一个变量用于枚举要使用的所有列,那么维护起来是否足够容易?如果是这样,这里有一个简单的脚本可以做到这一点:
//list of columns
subset_cols = {:Name("1"), :Name("4"), :Name("6"), :Name("9")};
dt = Current Data Table();
dt << Subset( All rows, columns( subset_cols ) )