Betreff: jsl-Skript zum Umcodieren mehrerer SpaltenDanke!
Betreff: jsl-Skript zum Umcodieren mehrerer SpaltenEine Problemumgehung wäre das Erstellen einer neuen Spalte mit einer Formel basierend auf der Spalte, die Sie neu codieren möchten.
Dann lösche die ursprüngliche Spalte
Betreff: jsl-Skript zum Umcodieren mehrerer SpaltenVielen Dank!
Betreff: jsl-Skript zum Umcodieren mehrerer SpaltenHier ist die Lösung mit der in JSL geschriebenen Recode-Funktion. Sie ist viel schneller als die zeilenweise Verarbeitung
Names Default To Here( 1 );
dmdt = current data table();
nc = dmdt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
col = Column( dt, nc[i] );
colname = col << getname();
Eval(
Parse(
Eval Insert(
"\[
dmdt << Recode Column(
:Name("^colname^"),
{Map Value( _rcOrig,
{ "1", "too low",
"2", "too low",
"3", "right",
"4", "too high",
"5", "too high"},
Unmatched( _rcNow ) )},
Update Properties( 1 ),
Target Column( :Name("^colname^") )
);
]\"
)
)
);
);
Betreff: jsl-Skript zum Umcodieren mehrerer SpaltenVielen Dank, Ihr Code mit dem assoziativen Array hat perfekt funktioniert.
Ich habe auch die andere Option ausprobiert, indem ich hinzugefügt habe
Match(As Column( lstColNames_n3[i])[Row()],
aber das hat nicht funktioniert.
Aber ich habe mein Problem gelöst.
Vielen Dank.
Betreff: jsl-Skript zum Umcodieren mehrerer SpaltenIch habe meine vorherige Antwort bearbeitet, es sollte bei der Umcodierung helfenBetreff: jsl-Skript zum Umcodieren mehrerer SpaltenIch müsste Werte umcodieren. Danke.
Betreff: jsl-Skript zum Umcodieren mehrerer SpaltenMüssen Sie Werte neu codieren oder könnten Sie möglicherweise Spalteneigenschaft-Wertbeschriftungen verwenden (auf diese Weise verlieren Sie nicht die Originaldaten), Beispiel: Kodieren Sie mehrere Spalten mit JSL-Skript neu
Bearbeiten:
Und wenn Sie sie an Ort und Stelle neu codieren müssen, gibt es mehrere Möglichkeiten, dies zu tun (ich würde Associative Array verwenden):
Names Default To Here(1);
dt3 = current data Table ();
n3 = dt3 << Get Column Names(string);
show(n3);
//create associative array to use matching keys to values
matchAa = Associative Array(
{"1","2","3","4","5"},
{"too low","too low","right","too high","too high"}
);
show(matchAa);
//loop over column names
For(i = 1, i <= N Items(n3), i++,
//refer to column and use set each value to update values
Column(dt3, n3[i]) << Set Each Value(
matchAa[AsColumn(n3[i])[Row()]]
);
);
Und für Ihre Lösung gibt es meiner Meinung nach ein Problem darin, wie Sie auf Werte in der Match-Funktion verweisen, und Sie müssen [Row()] hinzufügen, um einzelne Werte für Matching zu erhalten
Match(As Column( lstColNames_n3[i])[Row()],
Edit2:
Vollständiges Beispielskript als Anhang hinzugefügt
jsl-Skript zum Neukodieren mehrerer SpaltenVerehrte Gäste,
Ich versuche, mehrere Spalten mithilfe des folgenden Skripts neu zu kodieren (auch im Anhang zusammen mit einer Beispieldatentabelle). Ich habe mehrere Änderungen versucht, aber es funktioniert nicht. Die Werte in den Spalten verschwinden einfach, anstatt neu codiert zu werden.
Ich bin für jede Hilfe dankbar.
Vielen Dank,
Marcello.
dt3 = Current Data Table();
n3 = dt3 << Get Column Names();
Show( n3 );
lstColNames_n3 = dt3 << Get Column Names();
Show( lstColNames_n3 );
Show( lstCols_n3 );
lstCols_n3 = {};
For( i = 1, i <= N Items( lstColNames_n3 ), i++,
colName = lstColNames_n3[i];
col = Column( dt3, i );
Insert Into( lstCols_n3, col );
);
Show( lstCols_n3 );
For Each Row(
For( i = 1, i <= N Items( lstColNames_n3 ), i++,
As Column( lstColNames_n3[i] ) = Match( As Column( lstColNames_n3[i] ),
"1", "too low",
"2", "too low",
"3", "right",
"4", "too high",
"5", "too high"
)
)
);
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungDatenmischung und -bereinigungVersuchsplanungMassenanpassungQualitäts- und Verfahrenstechnik