如何将数字序列转换为唯一值?我有以下 Column1,需要创建一个新列,其中包含 Column1 中的连续重复次数
结果表应如下所示:
对于如何在 JSL 中编码有什么建议吗? (或列公式?)谢谢!
回复:如何将数字序列转换为唯一值?这是一个列公式方法:
// define values
Col1Vals = {"a","a","a","a","b","b","c","c","c"};
dt = New Table();
dt << New Column("MyValues",Character,Nominal,<< Set Values(Col1Vals));
// Create Cumulative Frequencies
dt << New Column("CumulativeFreqCount",Numeric,Continuous);
dt:CumulativeFreqCount << Set Each Value(
If(
Row() == 1, 1,
:MyValues == Lag( :MyValues, 1 ), Lag(:CumulativeFreqCount, 1 ) + 1,
1
)); // end set each value回复:如何将数字序列转换为唯一值?事实上,我错过了你想要获得累计总和的部分,而不仅仅是总和。
我很确定有更聪明、更有效的方法来做到这一点。 但这会起作用。
我本质上也在创建原始数据,供您测试和使用
// define values
Col1Vals = {"a","a","a","a","b","b","c","c","c"};
dt = New Table();
dt << New Column("MyValues",Character,Nominal,<< Set Values(Col1Vals));
// Generate summary
dt1 = dt << Summary( Group( :MyValues ), Freq( "None" ), Weight( "None" ) );
UniqueItems = dt1:MyValues << Get values;
FrequencyOfItems = dt1 << Get As Matrix; <BR /><BR />Close(dt1,"No Save");
// Add Cumulative Frequencies back
dt << New Column("CumulativeFreqCount",Numeric,Continuous);
for(i = 1, i <= N Items(UniqueItems),i++,
Rows = dt << Select Where(:MyValues == UniqueItems[i]) << Get Selected Rows;
ValsToAppend = Transpose(Index(1,FrequencyOfItems[i]));
dt[Rows,"CumulativeFreqCount"] = ValsToAppend;
dt << Clear Select;
); 
回复:如何将数字序列转换为唯一值?谢谢。我将代码放入 JMP 脚本文件中(请参阅附件),但该脚本未运行。有什么建议么?
将代码放入列公式中会更容易吗?
回复:如何将数字序列转换为唯一值?@rs ,
假设您有对数据表的引用 - 让我们说 dt :
dt1 = dt << Summary(
Group( :Column 1 ),
Freq( "None" ),
Weight( "None" )
)
如果数据未排序(通常应该排序),那么您可以在结果表上使用 sort()