sumif: Spalten zählen, wenn sie bestimmte Zeichen enthaltenHallo,
Ich habe eine Diskussion aus dem Jahr 2015 (Betreff „sumif“) gefunden, die ein sehr hilfreiches Skript für meine aktuelle Aufgabe enthält. Ich habe dort meine Frage geschrieben, weiß aber nicht, ob die Leute, die an dieser Diskussion teilgenommen haben, meine Frage sehen können.
Ich habe dieses Skript gefunden (leicht modifiziert) und es funktioniert hervorragend zum Zählen der Spalten für jede Zeile, deren Werte „0/0“ (oder was auch immer) sind.
dt << New Column("Sum",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Column(i)[] =="0/0")}, n))
)
)
);Doch wie bearbeitet man dieses Skript, um Spalten zu zählen, die „some_character“ enthalten?
Ich habe eine Datentabelle angehängt, in der die letzte Spalte „Summe“ eine Formel und die benötigten Ergebniszahlen enthält.
Ich habe eine große Datentabelle und hätte gerne ein Skript zum Zählen der Spalten für jede Zeile mit bestimmten Werten (als Zeichen).
Ich habe versucht, das obige Skript zu ändern, aber es funktioniert nicht:
dt << New Column("Miss",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Contains(Column(i)[],"."))}, n))
)
)
);</CODE>Please, help</P><P>Valentina</P></LINGO-BODY><LINGO-LABS id="lingo-labs-737490" slang="en-US" mode="CREATE"><LINGO-LABEL>Automatisierung und Skripting</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-737586" slang="en-US" mode="CREATE">Betreff: sumif: Spalten zählen, wenn sie bestimmte Zeichen enthalten</LINGO-SUB><LINGO-BODY id="lingo-body-737586" slang="en-US" mode="CREATE"><P>Die ursprüngliche Datentabelle, die Sie angehängt haben, war nicht so, da sie 4 Spalten hat (Sie können die Summenspalte nicht ignorieren).</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1711103084651.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_0-1711103084651.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/62510iAAF3B35AD80E493A/jthi_0-1711103084651.png" role="button" title="jthi_0-1711103084651.png" alt="jthi_0-1711103084651.png" /></span></SPAN></P>
<P>Abhängig von Ihren Daten würde ich dies folgendermaßen machen, wenn ich eine Formel verwenden würde (höchstwahrscheinlich würde ich das vermeiden und einfach eine reine Skriptlösung verwenden)</P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = Open("$DOWNLOADS/sum_help_data.jmp");
dt << Delete Column("Sum");
dt << New Column("Miss", Numeric, Continuous, Formula(
As Constant(
cols_of_interest = Filter Each({colname}, Current Data Table() << Get Column Names("String"),
!IsMissing(Regex(colname, "S\d"));
);
);
Local({
res = 0;
},
For Each({colname}, cols_of_interest,
res = res + (Contains(Column(colname)[], ".") > 0);
);
res;
);
));
Betreff: sumif: Spalten zählen, wenn sie bestimmte Zeichen enthaltenJa, es scheint, dass alle Daten vom gleichen Typ sein sollten.
Vielen Dank – es funktioniert!
Betreff: sumif: Spalten zählen, wenn sie bestimmte Zeichen enthaltenIch habe meinem Beitrag eine kleine Datentabelle angehängt. Sie hat 3 Zeilen und 3 Spalten mit einer Überschrift:
S1 S2 S3
0/0./. 0/0
./. ./. ./.
0/0 0/0 0/0
Das Skript funktioniert in dieser Beispieltabelle nicht
Spaltensumme Formel unterbrochen
Argument hat in Zeile 1 beim Zugriff oder bei der Auswertung von 'Enthält' den falschen Typ, Ungültiges Argument (Spalte(i)[]), Enthält/*###*/(Spalte(i)[], ".")
Fehler bei der Formelauswertung wurden ignoriert
Betreff: sumif: Spalten zählen, wenn sie bestimmte Zeichen enthaltenHöchstwahrscheinlich erreicht Ihre Schleife eine Spalte, die keine Zeichenspalte ist. Dieser Teil muss höchstwahrscheinlich geändert werden
n = N Col(Current Data Table()) - 1
Wie das gemacht werden soll, ist ohne Kenntnis Ihrer Daten sehr schwer zu sagen. Es könnte sich um eine einfache Änderung von -1 handeln, um das Abrufen einer Liste von Zeichenspalten oder um die Berechnung, welche Spalten nach einem bestimmten Muster durchgegangen werden sollen.
Betreff: sumif: Spalten zählen, wenn sie bestimmte Zeichen enthaltenDas hier ist aus meinem Logbuch:
Spaltensummenformel unterbrochen
Argument hat in Zeile 421001 beim Zugriff oder bei der Auswertung von 'Enthält' den falschen Typ, Ungültiges Argument (Spalte (i)[]), Enthält/*###*/(Spalte (i)[], ".")
Fehler bei der Formelauswertung wurden ignoriert
Betreff: sumif: Spalten zählen, wenn sie bestimmte Zeichen enthaltenEntschuldigen Sie, ich verstehe Ihre Frage nicht.
Ich habe eine Tabelle mit ca. 500.000 Zeilen und ca. 3.000 Spalten. Ich muss die Summe aller Spalten berechnen, die einen Punkt enthalten – ich kann keine Formel verwenden. .
Ich möchte ein Skript haben, irgendein Skript, das funktioniert. Ich habe verschiedene Ansätze ausprobiert, aber keiner hat funktioniert. .
Betreff: sumif: Spalten zählen, wenn sie bestimmte Zeichen enthaltenBraucht man dafür eine Formel?