Ich brauche Hilfe bei der Identifizierung der ersten Spalte ungleich NullIch habe einen großen Datensatz mit etwa 30 Spalten zeitbezogener Finanzeinträge.Ich möchte wissen, welche Spalte die erste mit einem Wert ungleich Null ist (in keiner Spalte fehlen Daten, aber ich möchte die erste Spalte mit einem positiven Werteintrag erhalten).Ich habe ein kleines erfundenes Beispiel mit vier Zeitspalten und einer fünften Spalte angehängt, das zeigt, wie meine Formel aussehen soll.Wenn die Nullwerte fehlen würden, könnte ich die Funktion für „Anzahl“ (Anzahl der nicht fehlenden Werte) verwenden, um zu bekommen, was ich will, aber wenn es keine fehlenden Daten und Nullwerte gibt, kann ich nicht herausfinden, wie ich die Identifizierung der Spalte automatisieren kann der erste, der einen positiven Wert hat.Alle Ideen werden geschätzt.
Betreff: Ich brauche Hilfe bei der Identifizierung der ersten Spalte ungleich Null@dale_lehman ,
Hier ein paar Gedanken und Lösungen zu Ihrem Problem.
Ansatz 1: Fahren Sie mit JSL aus der vorherigen Lösung fort und fügen Sie es der Tabelle hinzu
dt = Current Data Table();
Mat = dt << Get As Matrix;
DesList = list();
for(i = 1 , i <= N Rows(Mat), i++,
Pos = Min(Loc(Mat[i,0]));
Insert Into(DesList,Pos);
);
dt << New Column("Test",Numeric,Continuous,<< Set Values(DesList));
// Please note that there will be "." missing value if none of your columns have a positive value
Ansatz 2: Schreiben Sie die Formel in JSL und wenden Sie sie auf die Tabelle an – ein kleiner Umweg – aber skalierbar – ein altes, aber relevantes Beispiel – wird später am Tag bearbeitet
for(i = 1, i <= N Items(InvColNames), i++,
If(i == 1,
Stmt = ":" || InvColNames[i] || " >= 1 &" || ":" || InvColNames[i] || " <= InvLimit" ;
,
Stmt = Stmt || " & " || ":" || InvColNames[i] || ">= 1 &" || ":" || InvColNames[i] || " <= InvLimit" ;
) ;
);
Eval( Parse( Eval Insert("\[ dt_Inp << New Column("Status_Inv",Numeric,Continuous,Formula(^Stmt^)); ]\" ) ) );
Ansatz 3: Machen Sie so etwas manuell – ich bin kein Fan davon, kann aber selbst keine Alternative finden – vielleicht haben andere bessere Gedanken
If(
:Column 1 > 0, "Column 1",
:Column 2 > 0, "Column 2",
"No Positive"
)
Betreff: Ich brauche Hilfe bei der Identifizierung der ersten Spalte ungleich NullVielen Dank – das berechnet tatsächlich, was ich will, aber ich brauche etwas mehr Hilfe (aufgrund meiner fast nicht vorhandenen JSL-Fähigkeiten).Ich kann die korrekten Berechnungen im Protokollfenster sehen, aber wenn ich Ihr Skript in das Formelfenster für eine neue Spalte eingebe, erhalte ich leere Werte.Die Warnung, die ich erhalte, betrifft die Funktion Show().Wie kann ich die resultierenden Berechnungen in der neuen Formelspalte anzeigen lassen?
Betreff: Ich brauche Hilfe bei der Identifizierung der ersten Spalte ungleich Null@dale_lehman ,
Vielleicht versuchen Sie es damit?
dt = Current Data Table();
Mat = dt << Get As Matrix;
DesList = list();
for(i = 1 , i <= N Rows(Mat), i++,
Pos = Min(Loc(Mat[i,0]));
Insert Into(DesList,Pos);
);
Show(DesList);