根据唯一条目将 N 列条目合并为单列你好,
我有 N 列,其中包含我想要合并到单个列中的字符数据。对于给定行,许多列可以为空或包含重复/相同的值(与另一列中的条目相比)。
我知道列 --> 实用程序 --> 合并列下有一个函数,这将生成一个新列,其中所有字段并排并分隔。我需要有关如何在保持唯一性的同时执行此过程的建议(即,如果该行中没有其他具有相同值的列,则仅附加该列的值)
理想情况下,我希望获得有关如何在 JSL 中编写脚本的指导。 然而,也欢迎使用 JMP 数据表/函数的聪明(但更乏味)的方法!
谢谢。
自动化和脚本编写回复:根据唯一条目将 N 列的条目合并为单列谢谢布雷迪布雷迪!
对我也有用!回复:根据唯一条目将 N 列的条目合并为单列非常感谢小姐姐!!
我喜欢这个解决方案的灵活性,包括能够指定要使用的开始和结束列#。我真的很喜欢你还按字母顺序排序以减少排列数量!
回复较晚,抱歉。 我最初认为存在一个无法正常工作的极端情况问题,但重新访问后我没有发现问题。
回复:根据唯一条目将 N 列的条目合并为单列感谢 Txnelson 的快速回复和解决方案!
这工作正常,但是,我的列名称有点长并且我有很多,所以不想手动指定列表。
我可以使用简单的 dt << Get Column Names 获取列名称并存储它。
我也非常喜欢超级用户“ms”如何按字母顺序排列条目,这减少了排列数量(尽管我没有要求它)
回复较晚,抱歉。
回复:根据唯一条目将 N 列的条目合并为单列我更喜欢前面的答案,但您也可以通过点击来完成此操作,这对那些不编写脚本的人很有吸引力(显然,存在不编写脚本的人!!)
与关联数组方法一样,结果列的值按从小到大排序。
1) 选择原始列,并使用组合列实用程序创建多重响应列。
2) 选择新列并将文本应用到列实用程序,确保选中“创建指示器”框。
3) 选择 10 个新指标列后,应用组合列实用程序,确保选中“列是指标列”框。
回复:根据唯一条目将 N 列的条目合并为单列这是吉姆公式的替代方案。 不同之处在于的独特价值组合字符串按字母顺序排序,而不是按出现顺序排序。
通过设置本地参数可以概括列数氮。
dt = Current Data Table();
dt << New Column("Combined",
Character,
Formula(
Local({dt = Current Data Table(), N = 4},
Concat Items(Associative Array(dt[Row(), 1 :: N]) << get keys, ",")
)
)
);
(它使用数据表矩阵表示法,因此仅适用于 JMP 13 或更高版本)
回复:根据唯一条目将 N 列的条目合并为单列这是解决这个问题的一种方法。我创建了一个公式,该公式组合了列列表中的唯一值。我附上了一个示例数据表,其中的公式应用于最后一列

下面是使用的公式
VarList = {"One", "Two", "Three", "Four"};
DataList = {};
CountList = {};
DataValue = "";
For( i = 1, i <= N Items( VarList ), i++,
Insert Into( DataList, As Column( VarList[i] ) );
Insert Into( CountList, 0 );
);
For( i = 1, i <= N Items( VarList ) - 1, i++,
For( k = i + 1, k <= N Items( VarList ), k++,
If( DataList[i] == DataList[k],
CountList[k] = CountList[k] + 1
)
)
);
For( i = 1, i <= N Items( VarList ), i++,
If( CountList[i] == 0 & DataList[i] != "",
DataValue = DataValue || "," || DataList[i]
)
);
DataValue = Substr( DataValue, 2 );