通过统计表中的批次来创建数据表大家好,JMP 社区
我有一个仅部分填写了批号的数据集。
我的目标是创建一个包含每批一行的数据集。
我可以通过比较第一批和最后一批号来计算需要多少行。
如例所示,我需要一个有 30 行的数据集,因为第一个批次号是 7,最后一个是 37。
在批次名称中,应忽略前 3 位数字和后 2 位数字。
在我看来,这应该是很简单的,但我却陷入了困境……
我将非常感激能够摆脱困境!
谢谢
基督教
自动化和脚本数据混合和清理回复:通过统计表中的批次来创建数据表嗯,我不明白您的查询?您有多个行包含相同的信息(前 3 行,以及第 4 行和第 5 行),您缺少第 21-23、25-26、29 行?而且前 6 位数字也相同。
你到底想做什么?你可以随时右键单击该列并使用重新编码。
回复:通过统计表中的批次来创建数据表像这样?它会创建一个新表,每个批次只有一行,而不是多行,并填写缺失的批次。
Names Default To Here( 1 );
Batch_vals = Associative Array( :Batch ) << Get Keys;
prefix = Left( :Batch[1], 3 );
suffix = Right( :Batch[1], 2 );
rootlength = Length( Batch_vals[1] ) - Length( prefix ) - Length( suffix );
Batch_nums = Transform Each( {v, i}, Batch_vals, Num( Substitute( v, {prefix, suffix}, "" ) ) );
Min_batch = Min( Batch_nums );
Max_batch = Max( Batch_nums );
Batches = Min_batch :: Max_batch;
dt = New Table( "Batches", New Column( "Batch Number", numeric, continuous, Set Values( Batches ) ) );
Eval(
Eval Expr(
dt << New Column( "Batch", character, Formula( Expr( prefix ) || Right( Char( :Batch Number ), rootlength, "0" ) || Expr( suffix ) ) )
)
);
dt:Batch << Delete Formula;回复:通过统计表中的批次来创建数据表这不会创建批号,而只是数字。
Names Default To Here(1);
dt = Data Table("Format");
Summarize(dt, uniq = By(:Batch));
first_val = Num(Substr(uniq[1], 4, Length(uniq[1]) - 5));
last_val = Num(Substr(uniq[N Items(uniq)], 4, Length(uniq[1]) - 5));
dt = New Table("Res",
New Column("R", Numeric, Ordinal, Values(first_val::last_val))
);
您可以通过将该项目列表转换为字符串并从中创建表来添加批号(与前面的 first_val 和 last_val 相同)
batches = Transform Each({item}, As List((first_val::last_val)`),
"245" || Right("00000" || Char(item), 5) || "00"
);
dt = New Table("Res2",
New Column("R", Character, Ordinal, Values(batches))
);回复:通过统计表中的批次来创建数据表谢谢 Jarmo!这太完美了。
在撰写这篇文章时,我正在吹嘘 JMP 社区有多么令人难以置信,我并没有失望!
欢呼吧,克里斯蒂安
回复:通过统计表中的批次来创建数据表感谢@mmarchandFSLR的回复!
你的脚本运行完美!
您的解决方案包含一些对我来说很新的提示/脚本,例如,关联数组、Transform Each、Eval、Eval Expr。
我期待深入了解您的解决方案如何发挥作用!
在撰写这篇文章时,我吹嘘了 JMP 社区有多么不可思议,并且我并没有失望!
欢呼吧,克里斯蒂安
回复:通过统计表中的批次来创建数据表简单解释一下其中一些功能和一个重要的改变:
Names Default To Here( 1 );
//An associative array is a dictionary or hash map that links keys to values. Each key must be unique.
//Using a single column as the argument for the array gives us the unique values of the column with each value set to 1
//The <<GET keys="" message="" then="" yields="" the="" only=""></GET>
回复:通过统计表中的批次来创建数据表您可以通过按顺序增加批号来创建行。