計算字符串中特定單詞出現的次數您好,我希望在數據集中創建一個新列,用於計算特定單詞在字符串中出現的次數。 每行中的單詞由“*”分隔。
示例表:
動物名單
1 狗*狗*貓*鳥*狗
2狗*狗*貓*鳥*狗*狗
輸出應該是
動物清單 狗數
1 狗*狗*貓*鳥*狗 3
2狗*狗*貓*鳥*狗*狗 4
如果需要,可以提供額外的信息。
回复:計算字符串中特定單詞的出現次數N Rows( Loc( Words( :Column 1, "*" ), "dog" ) ) +
N Rows( Loc( Words( :Column 1, "*" ), "cat" ) )
回复:計算字符串中特定單詞的出現次數你好,
我如何更改函數來計算狗和貓的出現次數?
我嘗試了 Or,但這不能正常工作。
謝謝
翁賈伊
回复:計算字符串中特定單詞的出現次數我喜歡最後一張! 看起來它實際上最多可以工作到 16 位;雙精度數不能存儲 17 個連續的數字。 :: 運算符創建一個矩陣,之後有很多矩陣數學運算。
“函數”這個詞可能是最適合通用的詞……很容易解釋……
回复:計算字符串中特定單詞的出現次數還有兩個選擇。
使用字()使用空字符串作為分隔符的函數:
b = 111001010;
N Row(Loc(Words(Char(b), ""), "1"));
或者只是使用數學(即不將數字轉換為字符串)。 例如:
b = 111001010;
Sum(Mod(Round(b / 10 ^ (Floor(Log10(b + 1)) :: 0)), 10));
回复:計算字符串中特定單詞的出現次數請找到替代方案之一。 運行腳本來製作表格。
New Table( "Counting Ones",
Add Rows( 5 ),
New Column( "Number",
Numeric,
"Continuous",
Format( "Best", 17 ),
Set Values( [111000010100001, 10101, 11111, 0, 101010101] ),
Set Display Width( 132 )
),
New Column( "Count of One",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Formula(
Length( Char( :Number ) ) - Length(
Substitute( Char( :Number ), "1", "" )
)
),
Set Display Width( 102 )
)
)回复:計算字符串中特定單詞的出現次數看起來您的數據是數字(已經以 10 為基數!),因此您可能需要使用 char(value) 將其恢復為字符串表示形式。
回复:計算字符串中特定單詞的出現次數有很多方法可以做到這一點。 這是一個。
ASCIIcode = blobtomatrix(chartoblob("1"),"int",1,"big")[1]; // 49
intermediate=blobtomatrix(chartoblob("0101111001010"),"int",1,"big")==ASCIIcode;
// intermediate=[0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0]
sum(intermediate);
第 1 行只是獲取 ASCII 字符“1”的 ASCII 代碼的一種方法,以 1 個元素的矩陣形式返回。
第 2 行類似,但獲取更大的數組並將其與所需的代碼進行比較,從而得出第 3 行註釋中的值。
第 4 行只是將元素相加。
回复:計算字符串中特定單詞的出現次數你好
如果沒有分隔符怎麼辦,例如我想計算二進製字符串 111001010 中有多少個“1”?
我怎樣才能得到這樣的結果?

謝謝
回复:計算字符串中特定單詞的出現次數我可以確認 Loc() 函數並非 JMP Pro 特有的。 它在 JMP 中可用。
回复:計算字符串中特定單詞的出現次數JMP 13 的文檔並未表明 LOC() 函數只是 JMP Pro 函數。我將通過運行腳本索引中的 LOC() 函數示例來驗證這一點
幫助==>腳本索引
Names Default To Here( 1 );
Show( Loc( [1 0 1 0 1 0] ) );
Show( Loc( {"A", 2, 3, 2, 5, 2, 4, [1 5]}, 2 ) );
Show(
Loc( {"A", 2, 3, 2, 5, 2, 4, [1 5]}, [1 5] )
);回复:計算字符串中特定單詞的出現次數Loc() 函數僅存在於 JMP Pro 中嗎?
有沒有辦法在常規 JMP 中計算字符串中的單詞或特定符號?
@tx尼爾森寫道:
這是計算“dog”出現在給定列中的次數的公式
N Rows( Loc( Words( :Column 1, "*" ), "dog" ) )

回复:計算字符串中特定單詞的出現次數以下公式將查找其中包含字符串“dog”的所有項目
wordList=words(st,"*");
count=0;for(i=1,i<=n items(wordList),i++,count=sum(count,contains(wordList[i],"dog")));
count;
回复:計算字符串中特定單詞的出現次數這對於通配符詞有何作用? 例如,如果狗有dog1,而另一個有dog2? 我仍然希望它能計算出所有的狗話。
回复:計算字符串中特定單詞的出現次數謝謝你!!回复:計算字符串中特定單詞的出現次數這是計算“dog”出現在給定列中的次數的公式
N Rows( Loc( Words( :Column 1, "*" ), "dog" ) )

回覆:計算字串中特定單字出現的次數非常感謝, @ian_jmp 。
其實我沒想到Length - Length比N rows(Loc ()) 快 4 倍...
dt = Open( "$SAMPLE_DATA/Wafer Stacked.jmp" );
// Recode column: Lot_Wafer Label
Local( {dt},
dt = Data Table( "Wafer Stacked" );
dt << Begin Data Update;
For Each Row(
dt,
dt:Lot_Wafer Label[] = Substitute( dt:Lot_Wafer Label, "1", "xxx_" )
);
dt << End Data Update;
);
dt_long=dt << Concatenate(dt,dt,dt,dt);
t0=hptime();
dt_long <<NEW column=""></NEW>回覆:計算字串中特定單字出現的次數由於 6 個月後我不會記得這個技巧 - 而且我不想花時間告訴每個同事,所以我嘗試設定一個自訂函數:
Add Custom Functions(
New Custom Function(
"test",
"countWord",
Function( {myString, myWord},
If( Length( myWord ) > 0,
Return( (Length( myString ) - Length( Substitute( myString, myWord, "" ) )) / Length( myWord ) ),
Return( 0 )
)
),
<<DESCRIPTION></DESCRIPTION><BR />t0=hptime();<BR />dt_long << new column("new", set each value(test:countWord(:Lot_Wafer Label,"xxx")));<BR />Write ("via custom function:\!t",(hptime() - t0)/1000000,"s\!n");很遺憾:

我如何調整自訂函數以使其與@ian_jmp的原始版本一樣快?
[刪除 If(...) 有一點幫助 - 但如何讓它 < 1 秒? ]