当所有数据都丢失时,如何删除可变列号的行我有一个自动生成的数据集和一些列,其中有一个子字符串“X_Clean”的列,将有一些空值。有时有 2、3、4 甚至 5 个不同的列,具体取决于数据集。我想仅当这些“X_Clean”列的所有“n”都具有空值时才删除行,但如果至少其中一个列填充了值,则永远不会。
我在考虑做一个 FOR 循环来生成感兴趣的列列表,这很有效。
col_list = dt <<GET column="" names="">0, i--,
if(!contains(col_list[i], "X_Clean"),
remove from(col_list, i);
));</GET>但是我不确定下一步。因为我无法为每个单独的列执行另一个 FOR 循环,所以我需要总结所有这些列的值,如果为 null,则删除...或其他?
这是我的表格的示例,在这种情况下,只有日期的第 3 行才有资格被删除。
| 实体 | 2X_清洁 | 3X_清洁 | 4X_清洁 |
| A | 1个 | 3个 | 6个 |
| 乙 | | 4个 | 5个 |
| A | | | |
| 乙 | 4个 | 1个 | 3个 |
| A | 3个 | 4个 | 4个 |
| 6个 | 1个 | 1个 | 0 |
如果我可以对特定列进行硬编码,我会这样做,但我不能,因为它们各不相同。
dt << Select Where(Is Missing(:Name( "2X_Clean" ) | :Name( "3X_Clean" ) | :Name( "4X_Clean" )))<<DELETE rows=""></DELETE>
有任何想法吗?谢谢!
回复:当所有数据都丢失时,如何删除可变列号的行谢谢,吉姆。
回复:当所有数据都丢失时,如何删除可变列号的行这是我的错。我应该意识到以数字开头的列会使 JMP 感到困惑。我在 :Name() 函数中添加了对列名的引用。
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = N Items( col_list ), i > 0, i--,
If( !Contains( col_list[i], "X_Clean" ),
Remove From( col_list, i )
)
);
theExpr = "dt << select where(isMissing(Sum(:name(\!"" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || "\!"),:name(\!"" || col_list[i]
);
theExpr = theExpr || "\!")))==1)<<DELETE rows=""></DELETE>
回复:当所有数据都丢失时,如何删除可变列号的行吉姆,这是一个有趣的话题。 当我打开附件中的数据表并运行以下 jsl 时,似乎我无法删除所有空行。 为什么?
dt =当前数据表() ;
表达式= “dt <<选择哪里(isMissing(总和(:” || col_list [ 1个] ;
为了(我= 2个,我<= N 项( col_list ) ,我++,
表达式=表达式|| “,:” || col_list [我]
) ;
表达式=表达式|| "))==1)<<删除行;" ;
评价(解析(表达式) ) ;
回复:当所有数据都丢失时,如何删除可变列号的行您所要做的就是构建一个文字字符串变量,它是您需要运行的动态代码来完成您想要的,然后一旦构建,就执行它。下面的代码是您将如何做的示例
theExpr = "dt << select where(isMissing(Sum(:" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || ",:" || col_list[i]
);
theExpr = theExpr || "))==1)<<DELETE rows=""></DELETE>