我有多列(字符,名义)数据表。 我想将最后四列中的条目/项目放入同一数据表中的新列中,忽略堆叠列中的重复条目/项目。 在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)
应该也可以工作,因为键是按要求的字母顺序排序的。