表摘要和选择重复行中使用的字符串长度限制这是仅供参考,也许也是一个问题。
今天,一位客户询问用于判断行是否重复或执行表摘要的字符串长度是否有限制。她在一个单元格中有8000个字符长的字符串。(这是遗传标记数据。)她想查看一列数据中有多少个真实重复项。两者均未报告正确的行。她怀疑是字符串长度问题。
我进行了一些蛮力的比较,发现在执行“表摘要”或“选择重复的行”时仅比较了前2000个字符。
我还发现执行类似“ if(col1 == col2,“ Match”,“ No Match”)的操作没有2000个字符限制。(换句话说,比较中似乎使用了整个字符串(至少8000个字符)。)
我不知道其他功能。
因此,这是一个仅供参考的FYI,要提防长字符串的比较...还有一个问题:有人知道为什么在这种情况下我们限制为2000个字符吗?
关于表摘要和选择重复行中使用的字符串长度的限制嗨,杰里,
我在这里进行推测,但是我认为您的客户使用“表摘要”或“选择重复的行”正在做的事情是不合适的。您能给我们更多细节吗? 是8000个字符长且仅包含A,C,G和Ts的遗传密码吗? 如果是这样,这将是不合适的方法。听起来好像他们正试图将一个方形的钉子插入一个圆孔中。
如果他们真的想为此使用JMP,最好将每个字符都做成一列,然后在行之间查找重复项。
更重要的是他们的目标。 他们为什么要寻找重复项?
关于表摘要和选择重复行中使用的字符串长度的限制有趣的。 看来客户是对的。
dt1=New Table( "2000 characters",
Add Rows( 2 ),
New Column( "Column 1",
Character,
"Nominal",
Formula(
If( Row() == 1,
Repeat( "A", 1999 ) || "1",
Repeat( "A", 1999 ) || "2"
)
),
)
);
//this summary table will have two rows
dt1<< Summary(
Group( :Column 1 ),
Freq( "None" ),
Weight( "None" )
);
dt2=New Table( "2001 characters",
Add Rows( 2 ),
New Column( "Column 1",
Character,
"Nominal",
Formula(
If( Row() == 1,
Repeat( "A", 2000 ) || "1",
Repeat( "A", 2000 ) || "2"
)
),
)
);
//this summary table will have only one row
dt2<< Summary(
Group( :Column 1 ),
Freq( "None" ),
Weight( "None" )
);
我打赌ch会有一些见识。
关于表摘要和选择重复行中使用的字符串长度的限制果然杰里!
还有其他一些简单的工具(就像您使用的JSL代码一样),可以对较长的字符串进行比较。 特别令人感兴趣的是,字符串中的相同字符不仅长度相同,而且顺序也相同。 这些字符的字符和顺序外观为真副本。
但是,如果每个字符(在这种情况下为基数/标记)都在其自己的列中,然后选择所有这些列以用于选择重复的行或表摘要应该起作用(但可能会很慢)。
通常这是一个生物信息学问题,人们可能会编写代码来解决它。
关于表摘要和选择重复行中使用的字符串长度的限制值得一提的是,列公式似乎可以比较至少与8K个字符一样大的字符串。
下面的脚本确定30行中的哪些27行是3,8001个字符字符串的重复项,仅在最后一个字符上有所不同。
Names Default To Here(1);
a = repeat("0", 8000);
x = a ||"X";
y = a || "Y";
z = a || "Z";
vals = {x,y,z};
lis = {};
for(i=1, i<=30, i++,
insertinto(lis, eval(vals[randominteger(3)]));
);
dt = new table("xx", <<NEW column=""></NEW>关于表摘要和选择重复行中使用的字符串长度的限制谢谢大家@brady_brady和@杰夫·珀金森,您的分析比我做的还要优雅,但是我们得出了相同的结论... “表摘要”和“选择重复行”的上限为2000个字符,但公式似乎可以识别所有字符。
希望的ch会有更多的见解,也许会有更多的功能受到此限制?