Gibt „True“ oder „False“ zurück, wenn mehrere Spalten eine Zeichenfolge enthaltenHallo,
Ich möchte „False“ zurückgeben, wenn Spaltendaten „Hallo“ enthalten, andernfalls würde ich „True“ zurückgeben.

Ich kann nur eine Spalte verarbeiten. Wenn, irgendwelche Ideen?
Automatisierung und SkripterstellungBetreff: „True“ oder „False“ zurückgeben, wenn mehrere Spalten eine Zeichenfolge enthaltenHier ist mein Ansatz, der die Möglichkeit hinzufügt, den Bereich festzulegen.
If( Row() == 1,
dt = Current Data Table();
rangelow = 2;
rangehigh = 14;
);
If( Contains( dt[Row(), Index( rangelow, rangehigh )], "hello" ),
"False",
"True"
);
Ich habe eine Beispieldatentabelle angehängt, in der die Formel bereits in die Spalte eingebettet ist.Ich habe auch mit einbezogen @jthi Antwort in einer neuen Spalte namens Scan_RESULT

Betreff: „True“ oder „False“ zurückgeben, wenn mehrere Spalten eine Zeichenfolge enthaltenHallo,
Ich habe die Formel ausprobiert, aber sie ist nur leer. Gibt es eine Möglichkeit, es wie Excel zu machen? =IF(COUNTIF(R21602:AC21602,"HELLO")>0,"FALSE","TRUE"), wobei wir nur auf einen bestimmten Spaltenbereich abzielen können, um nach „Hallo“ zu suchen?
Formel:
dt << New Column("Scan_RESULT", Character, Nominal Formula(If(N Items(Loc(dt[Row(), 1::N Cols()], "hello")) > 0)),
"FALSCH"
,
"WAHR"
);
Betreff: „True“ oder „False“ zurückgeben, wenn mehrere Spalten eine Zeichenfolge enthaltenSie würden eine neue Formel erstellen Charakter Spalte Formeln in JMP erstellen (jmp.com) als letzte Spalte in der Datentabelle und kopieren Sie die von mir angegebene Formel und fügen Sie sie ein. Danach können Sie die Spalteneigenschaften erneut öffnen, indem Sie auf die Spaltenüberschrift doppelklicken und bei Bedarf die Formel entfernen. Wenn Sie über JMP16 Enhanced Log verfügen, sollte Ihnen ein Skript zur Verfügung stehen, mit dem Sie dies bei Bedarf ausführen können.
Ich hatte ein zusätzliches „“, im früheren Beitrag (ich werde es herausschneiden):
If(N Items(Loc(Current Data Table()[Row(), 1::N Cols()], "hello")) > 0,
"FALSE"
,
"TRUE"
);
Betreff: „True“ oder „False“ zurückgeben, wenn mehrere Spalten eine Zeichenfolge enthaltenIn Bezug auf Excel ist dies meine Formel:
=IF(COUNTIF(R21602:AC21602,"HALLO")>0,"FALSE","TRUE")
Betreff: „True“ oder „False“ zurückgeben, wenn mehrere Spalten eine Zeichenfolge enthaltenHallo,
Ich habe einen Datensatz mit einigen tausend Zeilen, müsste die Daten jedoch mit einem JMP-Skript nachbearbeiten. Bisher hat mein Skript den gesamten Lärm herausgefiltert. Sie müssen lediglich wissen, wie Sie die von Ihnen bereitgestellte Lösung implementieren
Betreff: „True“ oder „False“ zurückgeben, wenn mehrere Spalten eine Zeichenfolge enthaltenEs gibt viele Möglichkeiten, dies zu tun. Benötigen Sie eine Formel, reicht das Festlegen von Werten aus, JSL oder nicht, eine interaktive Lösung?
Hier ist eine mögliche Formel, aber ich würde sie entfernen, nachdem sie einmal berechnet wurde, da sie nicht auf ähnliche Weise neu ausgewertet wird, wie dies bei Formeln normalerweise der Fall ist (das dürfte in diesem Fall kein Problem sein).
If(N Items(Loc(Current Data Table()[Row(), 1::N Cols()], "hello")) > 0,
"FALSE"
,
"TRUE"
);

Dieses Skript soll eine kleine zusätzliche Erklärung geben, es wird jedoch keine neue Spalte für Sie erstellen. Öffnen Sie das Protokoll und führen Sie dies aus. Sie können auch Row() = 1 in Row() = 2 usw. ändern, um zu sehen, wie es sich in verschiedenen Zeilen verhält
Names Default To Here(1);
dt = New Table("Untitled 9",
Add Rows(3),
New Column("Column 1", Character, "Nominal", Set Values({"hello", "bye", "bye"})),
New Column("Column 2", Character, "Nominal", Set Values({"hello", "bye", "bye"})),
New Column("Column 3", Character, "Nominal", Set Values({"hello", "bye", "bye"})),
New Column("Column 4", Character, "Nominal", Set Values({"hello", "hello", "bye"})),
New Column("Column 5", Character, "Nominal", Set Values({"hello", "bye", "bye"}), Set Display Width(75)),
New Column("Column 6", Character, "Nominal", Set Values({"hello", "bye", "bye"}))
);
Row() = 1;
Show(Current Data Table()[Row(), 1::N Cols()]);
Show(Loc(Current Data Table()[Row(), 1::N Cols()], "hello"));
Show(N Items(Loc(Current Data Table()[Row(), 1::N Cols()], "hello")));
Show(N Items(Loc(Current Data Table()[Row(), 1::N Cols()], "hello")) > 0);

Bearbeiten:
Zusätzliches „“,“ aus der Formel entfernt
Betreff: Gibt „True“ oder „False“ zurück, wenn mehrere Spalten eine Zeichenfolge enthaltenWas ist, wenn ich wissen möchte, wie oft „Hallo“ in diesem Spaltenbereich erscheint?
Und noch eine andere Situation: Was ist, wenn das Wort „Hallo“ in bestimmten Spalten Teil des Textes in der Zelle ist?
Betreff: Gibt „True“ oder „False“ zurück, wenn mehrere Spalten eine Zeichenfolge enthalten1. Sie können Loc verwenden, um nach Übereinstimmungen zu suchen
If(Row() == 1,
dt = Current Data Table();
rangelow = 1;
rangehigh = 6;
);
N Items(Loc(dt[Row(), Index(rangelow, rangehigh)], "hello"));
2. Ich nehme an, Sie möchten wissen, wie oft „Hallo“ in diesem Bereich vorkommt. Schleife + Enthält oder Ersetzen + Länge sind Optionen.
If(Row() == 1,
dt = Current Data Table();
rangelow = 1;
rangehigh = 6;
);
str = Concat Items(dt[Row(), Index(rangelow, rangehigh)], " ");
new_str = Substitute(str, "hello", "");
(Length(str) - Length(new_str)) / Length("hello")
If(Row() == 1,
dt = Current Data Table();
rangelow = 1;
rangehigh = 6;
);
res = Filter Each({val}, dt[Row(), Index(rangelow, rangehigh)], Contains(val, "hello"));
N Items(res);
Mehr anzeigen...
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
New Column("Column 1", Character, "Nominal", Set Values({"hello", "bye", "bye"})),
New Column("Column 2", Character, "Nominal", Set Values({"hello", "bye", "bye"})),
New Column("Column 3", Character, "Nominal", Set Values({"hello", "hello", "bye"})),
New Column("Column 4", Character, "Nominal", Set Values({"hello", "a hello a", "bye"})),
New Column("Column 5", Character, "Nominal", Set Values({"hello", "bye", "bye"}), Set Display Width(75)),
New Column("Column 6", Character, "Nominal", Set Values({"hello", "bye", "bye"}))
);
dt << new column("hellocount", numeric, continuous, formula(
If( Row() == 1,
dt = Current Data Table();
rangelow = 1;
rangehigh = 6;
);
N Items(Loc(dt[Row(), Index(rangelow, rangehigh)], "hello"));
));
dt << new column("hellocountwithin", numeric, continuous, formula(
If(Row() == 1,
dt = Current Data Table();
rangelow = 1;
rangehigh = 6;
);
str = Concat Items(dt[Row(), Index(rangelow, rangehigh)], " ");
new_str = Substitute(str, "hello", "");
(Length(str) - Length(new_str)) / Length("hello");
));
dt << new column("hellocountwithin2", numeric, continuous, formula(
If(Row() == 1,
dt = Current Data Table();
rangelow = 1;
rangehigh = 6;
);
res = Filter Each({val}, dt[Row(), Index(rangelow, rangehigh)], Contains(val, "hello"));
N Items(res);
));
Betreff: Gibt „True“ oder „False“ zurück, wenn mehrere Spalten eine Zeichenfolge enthaltenVielen Dank. Die Formel hat perfekt funktioniert. Mir ist jedoch aufgefallen, dass meine Daten etwas komplexer sind.
Ich habe zwei Zielwörter, zum Beispiel „Hallo“ und „Hi“. In manchen Zellen kann „Hi“ zwei- oder dreimal vorkommen, in anderen sowohl „Hallo“ als auch „Hi“. Ich muss die Anzahl der Zellen zählen, die eines der beiden Wörter enthalten – jede Zelle sollte nur einmal gezählt werden, unabhängig davon, wie oft die Wörter darin vorkommen.
Betreff: Gibt „True“ oder „False“ zurück, wenn mehrere Spalten eine Zeichenfolge enthaltenIch nehme an, das ist, was Sie suchen

Sie haben bereits eine grundsätzliche Antwort darauf erhalten. Wählen Sie die „richtige“ „Formel“ (diese wird nicht dynamisch ausgewertet) und fügen Sie eine zusätzliche Prüfung auf „hi“ hinzu.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
New Column("Column 1", Character, "Nominal", Set Values({"hello", "bye", "bye"})),
New Column("Column 2", Character, "Nominal", Set Values({"hello", "bye", "bye"})),
New Column("Column 3", Character, "Nominal", Set Values({"hello", "hello", "bye"})),
New Column("Column 4", Character, "Nominal", Set Values({"hello", "a hello a", "bye"})),
New Column("Column 5", Character, "Nominal", Set Values({"hello", "bye", "bye"}), Set Display Width(75)),
New Column("Column 6", Character, "Nominal", Set Values({"hello hello hi", "hi hi hi hi", "bye"}))
);
dt << new column("C", numeric, continuous, formula(
If(Row() == 1,
dt = Current Data Table();
rangelow = 1;
rangehigh = 6;
);
res = Filter Each({val}, dt[Row(), Index(rangelow, rangehigh)], Contains(val, "hello") | Contains(val, "hi"));
N Items(res);
));