计算字符串中特定单词出现的次数您好,我希望在数据集中创建一个新列,用于计算特定单词在字符串中出现的次数。 每行中的单词由“*”分隔。
示例表:
动物名单
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 秒?]