如何對唯一值進行編號排序?我有以下 Column1 並且需要創建一個新列,其中包含 Column1 中的連續重複次數
結果表應如下所示:
| 第 1 列 | 第 2 列 |
| 一個 | 1 |
| 一個 | 2 |
| 一個 | 3 |
| b | 1 |
| b | 2 |
| C | 1 |
任何建議如何在 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()