Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenHallo, ich möchte in meinem Datensatz eine neue Spalte erstellen, die zählt, wie oft ein bestimmtes Wort in einer Zeichenfolge vorkommt. Die Wörter werden in jeder Zeile durch „*“ getrennt.
Beispieltabelle:
Tierliste
1 Hund*Hund*Katze*Vogel*Hund
2 Hund*Hund*Katze*Vogel*Hund*Hund
Ausgabe sollte sein
Tierliste Hundeanzahl
1 Hund*Hund*Katze*Vogel*Hund 3
2 Hund*Hund*Katze*Vogel*Hund*Hund 4
Kann bei Bedarf zusätzliche Informationen bereitstellen.
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenN Rows( Loc( Words( :Column 1, "*" ), "dog" ) ) +
N Rows( Loc( Words( :Column 1, "*" ), "cat" ) )
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenHallo,
Wie würde ich die Funktion ändern, um die Anzahl der Vorkommen von Hund und Katze zu zählen?
Ich habe es mit Or versucht, aber das funktioniert nicht richtig.
Danke
Onjai
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenLetzteres gefällt mir! Es sieht so aus, als würde es tatsächlich bis zu 16 Bit funktionieren; 17 aufeinanderfolgende Einsen können nicht in einer Zahl mit doppelter Genauigkeit gespeichert werden. Der ::-Operator erstellt eine Matrix, und danach gibt es eine Menge Matrixberechnungen.
Die Wortfunktion ist möglicherweise die beste für den allgemeinen Gebrauch ... da sie leicht zu erklären ist ...
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenZwei weitere Alternativen.
Benutzen Sie die Wörter() Funktion mit einem leeren String als Trennzeichen:
b = 111001010;
N Row(Loc(Words(Char(b), ""), "1"));
Oder einfach mit Mathematik (dh ohne die Zahl in einen String umzuwandeln). Zum Beispiel:
b = 111001010;
Sum(Mod(Round(b / 10 ^ (Floor(Log10(b + 1)) :: 0)), 10));
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenBitte finden Sie eine der Alternativen. Führen Sie das Skript aus, um eine Tabelle zu erstellen.
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 )
)
)Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenEs sieht so aus, als ob Ihre Daten numerisch sind (Basis 10 bereits!), daher müssen Sie möglicherweise char(value) verwenden, um sie wieder in eine Zeichenfolgendarstellung umzuwandeln.
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenEs gibt viele Möglichkeiten, dies zu tun. Hier ist eine.
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);
Zeile 1 ist lediglich eine Möglichkeit, den ASCII-Code für das ASCII-Zeichen „1“ abzurufen, das in einer Matrix aus 1 Element zurückgegeben wird.
Zeile 2 ist ähnlich, erhält jedoch ein größeres Array und vergleicht es mit dem gewünschten Code, was zu dem Wert im Kommentar von Zeile 3 führt.
Zeile 4 addiert lediglich die Elemente.
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenHallo
Was passiert, wenn es kein Trennzeichen gibt, z. B. möchte ich zählen, wie viele „1“ in einer Binärzeichenfolge 111001010 sind?
Wie kann ich solche Ergebnisse erzielen?

Danke
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenIch kann bestätigen, dass die Loc()-Funktion nicht spezifisch für JMP Pro ist. Es ist in JMP verfügbar.
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenAus der Dokumentation für JMP 13 geht nicht hervor, dass die LOC()-Funktion nur eine JMP Pro-Funktion ist.Ich würde das validieren, indem ich das LOC()-Funktionsbeispiel im Scripting Index ausführe
Hilfe==>Skriptindex
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] )
);Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenGibt es die Funktion Loc() nur in JMP Pro?
Gibt es eine Möglichkeit, Wörter oder bestimmte Symbole in einer Zeichenfolge in regulärem JMP zu zählen?
@txnelson schrieb:
Hier ist die Formel zum Zählen, wie oft „Hund“ in einer bestimmten Spalte erscheint
N Rows( Loc( Words( :Column 1, "*" ), "dog" ) )

Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenMit der folgenden Formel werden alle Elemente gefunden, die die Zeichenfolge „Hund“ enthalten
wordList=words(st,"*");
count=0;for(i=1,i<=n items(wordList),i++,count=sum(count,contains(wordList[i],"dog")));
count;
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenWie würde das für Platzhalterwörter funktionieren? Wenn zum Beispiel Hund Hund1 hätte und ein anderer Hund2 sagte? Ich möchte immer noch, dass alle Hundewörter gezählt werden.
Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenDanke schön!!Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenHier ist die Formel zum Zählen, wie oft „Hund“ in einer bestimmten Spalte erscheint
N Rows( Loc( Words( :Column 1, "*" ), "dog" ) )

Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenVielen Dank, @ian_jmp .
Eigentlich habe ich nicht erwartet, dass die Länge - Länge 4x schneller ist als N Zeilen (Loc ()) ...
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>Betreff: Zählen Sie, wie oft bestimmte Wörter in einer Zeichenfolge vorkommenDa ich mich in 6 Monaten nicht mehr an den Trick erinnern werde und ich nicht die Zeit investieren möchte, ihn jedem Kollegen zu erzählen, habe ich versucht, eine benutzerdefinierte Funktion einzurichten:
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");Leider:

Wie muss ich die benutzerdefinierte Funktion anpassen, damit sie genauso schnell ist wie die Originalversion von @ian_jmp ?
[Das Entfernen von If(...) hilft ein wenig – aber wie bekommt man es < 1s?]