如何識別與我的參考詞有超過 2 個字符不同的詞(使用列中的公式)?大家好,
我有一列由具有不同字符組合的單詞組成(即 AAAAAAAAAA - 包含 10 個字符的單詞)。 我想在相鄰列中識別出具有超過 2 個字符不同的單詞(即 A乙AAAA CE AA)。 字母不同的位置並不重要,此外,某些單詞也可以比我的參考單詞更短或更長。
因此,我想實現一個公式,使我能夠區分/識別與我的參考序列有少於/多於 2 個不同字符差異且具有相同長度的單詞。 我還是JMP的初學者,不知道這是否可以實現。 如果您有任何建議,請告訴我:)
高級統計建模消費者和市場研究實驗設計回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?謝謝Jthi! 效果很好;)
回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?感謝您提供額外信息! 從腳本索引中查看最短編輯腳本:

有了它,你也許可以做一些事情,除非速度太慢。 Pat Match 也許也可以做到這一點,但我還沒有研究如何正確使用它。
editList = Shortest Edit Script(:List of sequences, "FEBRUARY");
common = "";
For(i = 1, i <= N Items(editList), i++,
If(editList[i][1] == "Common",
common = common || editList[i][2]
)
);
Length(common) < Length(:List of sequences) - 2;

回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?嗨克雷格,
感謝您的幫助。 我有 1 到 5e6,只有一個參考詞。 我基本上想過濾掉與參考詞相比有超過 2 個字母不同的單詞,因此我不需要超過是/否或 0/1 作為答案。 回顧一下你的問題:
test = "AEIOUA" // nDiff = 0 表示相同的字符串
test = "AAEIOU" // nDiff = 1 - 對於相同的字母,重新排序。
- 第一個A僅保留在同一位置。 (5 個不同字母)
test = "AEIOU" // 對於相同的字母,nDiff = 1,右側缺少一個
test = "EIOUA" // 對於相同的字母,nDiff = 1,左側缺少一個
測試 = "EIOU" // nDiff = 1
測試 = "AA" // dDiff = 1
測試 = "AXA" // dDiff = 1
- 長度與AEIOUA 不同。 為此,我應用了函數 Len 來過濾掉這些單詞。
test = "AXXXXA" // dDiff = 1 用於匹配長度
- 第一個和最後一個 A 保持在相同位置。 (4個不同的字母)
測試=“AEI俄勒岡州A" // dDiff = 0 表示內部字母交換
與AEIOUA只有2個字母不同,所以會通過標準。
test = "AEIOUEIOU" // 對於重複字母,nDiff = 1
長序列。 使用 Len 刪除。
抱歉,我在解釋我的問題時不清楚。 除了您的問題之外,我還重新創建了一個我正在尋找的示例。
| 參考序列 | 二月 |
| | |
| 序列列表 | 標籤 - 與參考有超過 2 個字符不同? |
| 二月A尤里 | 不 |
| 世界航空協會魯瑞 | 是的 |
| 亞拉烏爾貝夫 | 是的 |
| 二月右右右 | 不 |
| 二月瓦 | 不 |
| 是乙奧爾貝夫 | 是的 |
| 是乙尿素尿率阿里 | 是的 |
回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?我們需要更多的例子。 差異的數量是多少(不要過度指定,指出不重要的地方。)
ref = "AEIOUA" // 嘗試理解重複字母的規則
test = "AEIOUA" // nDiff = 0 表示相同的字符串
測試 = "AAEIOU" // nDiff = ?對於相同的字母,重新排序
測試 = "AEIOU" // nDiff = ?對於相同的字母,右側缺少一個
測試 = "EIOUA" // nDiff = ?對於相同的字母,左邊缺少一個
測試 = "EIOU" // nDiff = ?
測試 = "AA" // dDiff = ?
測試 = "AXA" // dDiff = ?
測試 = "AXXXXA" // dDiff = ?用於匹配長度
測試 = "AEIUOA" // dDiff = ?對於交換的內部字母
測試 = "AEIOUEIOU" // nDiff = ?對於重複的字母
這些答案將有助於選擇算法:
你說了〜1e6個測試詞;您正在查看多少個參考詞?
除了“是/否,存在超過 2 個差異”之外,您還需要其他答案嗎? 差異計數有用嗎?
回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?看來我誤解了你的意思”我想在相鄰列中識別出具有超過 2 個字符不同的單詞”。 我的建議是標記源列中每個單元格包含一個字符串的行,該字符串本身由兩個以上不同的字符組成(因此沒有參考序列或字符串)。
回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?你好,Jthi,謝謝你的建議。
老實說,我仍在嘗試理解這個公式:')。 在我正在處理的文件中,我只有一個參考詞,並且必須使用每種可能的位置/字母組合來篩選超過一百萬行條目。 我認為這個公式不起作用,因為我無法在公式中定義這些值。 考慮到大型數據庫 Ive 是否可以對其進行調整?
回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?嗨伊恩,
感謝您的反饋。 我試圖實現你寫的公式,但我不知道在哪裡可以定義我的參考序列是 AAAAAAA 而不是其他東西。 我將項目選擇中的“”替換為“AAAAAAAA”,但結果不正確。 有什麼建議我如何升級你寫的公式嗎?
回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?有很多方法可以做到這一點。 這是一個附加選項:
Names Default To Here(1);
/*
a = "ABAAAACEAA";
b = "AAAAAAAAAA";
Show(!IsMissing(Substitute(a, Left(a,1), "")));
Show(!IsMissing(Substitute(b, Left(b,1), "")));
*/
New Table("Untitled 2",
Add Rows(3),
New Column("Column 1", Character, "Nominal", Set Values({"ABAAAACEAA", "AAAAAAAAAA", "BBBBAAA"})),
New Column("Column 2",
Numeric,
"Continuous",
Format("Best", 12),
Formula(!Is Missing(Substitute(:Column 1, Left(:Column 1, 1), "")))
)
);
Column1 是包含字符的列
Formula(!Is Missing(Substitute(:Column 1, Left(:Column 1, 1), "")))
在這個簡單的示例中,想法是替換從第一個位置找到的字符串中的所有值,如果仍然剩下一些字符,我們就知道字符串中的字符超過 1 個。 如果您有多個值需要替換,您應該能夠通過修改 Substitute 函數參數來使用相同的想法
回复:如何識別與我的參考詞有超過 2 個字符不同的單詞(使用列中的公式)?請看一下所附的表格,它應該能讓您有所了解。 它的核心是公式列(稱為“決策”,並在表的列面板中用“+”號表示)。 單擊“+”給出:

您需要一些 JSL 知識才能理解這一點,並且如果需要,可以使用“幫助 > 腳本索引”來準確了解它的工作原理。