大家好,
我正在编写一个脚本,用于根据某些条件从数据表中选择一个子集:
Example dt 是我的数据表,其中包含列:Error_ID
我输入:“dt_subset=dt< 现在假设 dt 数据表中没有 Error_ID==0 行,则 dt_subset 为空。
我原本期望 dt_subset 是一个新数据表,它与表 dt 具有相同的列,但行数为 0,这样,如果我检查“If( !Empty(dt_subset)...)”,我会得到 false,并且我不会继续对空的 dt_subset 表进行操作。
如果我尝试检查 dt_subset 是否为空,则会出错。
我基本上想做的是检查所选内容是否为空。您有解决方案吗?
感谢您的帮助!
如果您只想检查是否选中了任何行,可以使用<< 获取选定行
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Where(:age >= 20);
selrows = dt << Get Selected Rows;
If(N Items(selrows) == 0,
Throw("No rows selected");
);
如果经过这样的筛选后我仍然需要一个空表,我通常会这样做:
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
rows_of_interest = dt << Get Rows Where(:age >= 20);
If(N Items(rows_of_interest) > 0,
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output table("SUBSET"));
,
dt_subset = dt << Subset(Rows(1), Selected Columns(0), Output table("SUBSET"));
dt_subset << Delete Rows(1);
);
Show(N Rows(dt_subset)); // demo purposes
如果您想从尚未创建的表中进行检查,则需要进行检查。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt_subset = dt << Select Where(:age >= 20) << Subset(Selected Rows(1), Selected Columns(0), Output table("SUBSET"));
If(Is Empty(dt_subset),
Throw("No rows selected");
);
Write();