大家好,
不知道为什么我很难找到正确的解决方案,但是当每列缺少不在同一行上的条目时,我很难组合文本列 - 但所有行都对齐。 请参阅下面的屏幕截图。

例如,如果一行有条目 A、B 或 C,那么如果它位于列中(例如:C1 或 :C2),则两列的行是相同的。 对于我的数据表,我有许多文本列,每个列都有一些缺失的行条目,请参见上面的示例。 我正在尝试使用一个列公式,该公式使用 :C1 或 :C2 到 :CN 的所有不同文本条目。
我尝试使用以下列公式,但当 :C1 为空时它不会填充该列

我认为解决方案非常简单,但我没有找到解决方案,并且对如何解决这个问题一无所知。 这样做的好处是,对于我的数据表中的 :C1 到 :CN 列,如果一行不为空,则该行的所有列都将具有相同的字符。 例如,所有列都有第 4 行的条目 D(除非它丢失)。 我希望通过使用每个 :CN 列的非缺失条目来最终得到一个没有缺失值的列,如上面的列 :Correct。
希望这是有道理的。 任何帮助深表感谢。
谢谢!,
DS
Is Empty() 检查单元格是否存在。你需要 Is Missing()
我不确定它有多快,但您可以使用关联数组来删除所有重复项。 这不是最干净的解决方案,但它可能有效
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"A", "B", "C", ""})),
New Column("Column 2", Character, "Nominal", Set Values({"A", "", "", ""})),
New Column("Column 3", Character, "Nominal", Set Values({"A", "", "C", ""}))
);
dt << New Column("Col", Character, Nominal, Formula(
aa = Associative Array(Eval List({:Column 1, :Column 2, :Column 3}));
(aa << get keys)[N Items(aa)];
));
</CODE></P>
<P> </P>
<P>其他应该工作得相当好的选项是找到第一个不丢失的值,然后使用它(构建一个列表,使用 loc 查找非丢失索引,如果找到,则使用它从列表中获取值,如果未设置它作为失踪)</P>
<PRE><CODE class=" language-jsl">dt << New Column("Col2", Character, Nominal, Formula(
l = Eval List({:Column 1, :Column 2, :Column 3});
ok_idx = Loc(!Matrix(IsMissing(l)));
If(N Items(ok_idx) > 0,
l[ok_idx][1];
,
""
)
));
您还可以使用空格连接

然后创建其他列,即第一个单词


类似的事情可以使用 Cols/Utilities/Combine Columns 和 First Word 列公式来完成
你好@tx尼尔森和@jthi ,
感谢您的快速回复。 我决定去@tx尼尔森的解决方案——既好又简单。 我脑子里认为条件 Is Missing() 只适用于数字,所以我什至没有尝试过。 我知道这应该是相对简单的。
谢谢!,
DS