我有多列(字符,名義)數據表。 我想將最後四列中的條目/項目放入同一數據表中的新列中,忽略堆疊列中的重複條目/項目。 在JSL中如何實現這一點?
在不知道你的數據看起來如何以及它最終應該是什麼樣子的情況下,我最好的猜測是使用以下組合關聯數組() << 獲取鍵和連接項目()
@jthi謝謝。 但這會刪除重複項嗎?
我的列(要堆疊)之間有共同的字符條目,但也有獨特的條目。 我想將每個內容保留在新列中,刪除重複項。
關聯數組不能有重複的鍵,所以是的,它會(它也是有序的,因此順序可能會改變)。
以下是一些方法:
- 表操作:
- 使用“表”>“堆棧”將列堆疊到一列中
- 使用表 > 摘要,並將堆疊列作為組角色
- 吉林省
- 將列值放入列表中
- list_of_values = 列(表名, 列名) << 獲取值
- 您可以在另一列上再次執行此操作並將這些值插入到列表中
- list_of_values = 插入(list_of_values, 列(表名, 另一個列名) << 獲取值)
- 根據需要重複
- 使用關聯數組來獲取唯一值
- unique_values = (關聯數組(list_of_values)) << 獲取鍵
- 將該值列表放入數據表中的新列中
Names Default To Here( 1 );
// create table with 4 columns with random letters
nr = 20;
dt = New Table( "Example", addrows( nr ) );
letterlist = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
dt << New Column( "C1", character );
Column( dt, "C1" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C2", character );
Column( dt, "C2" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C3", character );
Column( dt, "C3" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C4", character );
Column( dt, "C4" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
// Method 1
dtstack = dt << Stack(
columns( :C1, :C2, :C3, :C4 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output Table( "Stacked Values" )
);
dtstack << Summary(
Group( :Data ),
Freq( "None" ),
Weight( "None" ),
output table name( "Unique Values" )
);
//Method 2
list_of_values = Column( dt, "C1" ) << get values;
Insert Into( list_of_values, Column( dt, "C2" ) << get values );
Insert Into( list_of_values, Column( dt, "C3" ) << get values );
Insert Into( list_of_values, Column( dt, "C4" ) << get values );
Print( list_of_values );
unique_values = (Associative Array( list_of_values )) << get keys;
dtunique = New Table( "Unique Values" );
dtunique << New Column( "Unique Values", character );
Column( dtunique, "Unique Values" ) << set values( unique_values );
@jthi好的。 謝謝。 這是正確的語法嗎?
aa = Associative Array( As Column(lastCH), As Column(2ndLastCH), As Column(3rdLastCH), As Column(4rthLastCH)) << get keys();
// Where "lastCH", "2ndlastCH", "3rdlastCH" and "4rthlastCH" are column headers for the last four columns in my data table, supplied from above
@薩姆加德納
這兩個都工作正常,但如果每列的行數與我的實際數據集的情況不同,則會附加一個空行。
如果你插入代碼
remove from(unique_values, loc(unique_values,"")[1])
在創建 unique_values 列表的行之後,將從列表中刪除作為空字符串的值。
remove from(unique_values, 1)
應該也可以工作,因為鍵是按要求的字母順序排序的。