So codieren Sie eine Spalte mit einer Formel in JSL neuIch habe Probleme damit, mein Recode-Skript korrekt auszuführen. Ich habe eine Datentabelle mit einer Spalte namens DEPT, die eine Nummer enthält, die einem bestimmten Abteilungsnamen entspricht. Was ich tun möchte, ist eine neue Spalte namens Dept Name zu erstellen, die die Werte in DEPT übernimmt und sie in den geschriebenen Abteilungsnamen und nicht in die numerische Version konvertiert. Diese Tabelle ist Teil eines größeren Skripts, das ich zweimal pro Woche mit einem rollierenden Jahr von Daten bei jeder Ausführung ausführe, sodass möglicherweise nicht jede Abteilungsnummer / jeder Abteilungsname in einer bestimmten Iteration vorhanden ist. Unten ist, was ich versucht habe, aber es ist mir nur gelungen, entweder einfach den Wert von DEPT in Dept Name zu transponieren oder nur eine leere Dept Name-Spalte zu erhalten. Jede Hilfe wäre sehr willkommen.
FD << Current Data Table();
New Column("Dept Name", Character, Nominal, Formula(:DEPT));
:Dept Name << Delete Formula;
For Each Row(:Dept Name =
Match( :Dept Name,
"100", "Wet Production",
"200", "QA Lab",
"300", "Dry Component",
"400", "Finished Component",
"410", "Microsis",
"415", "Antimicrobial",
"425", "Finished Component Product",
"475", "Special Processing",
"490", "eSIS",
"500", "QC",
"600", "Labeling",
"700", "Sterilization",
"1000", "Shipping and Finished Product Labeling",
"1200", "Quarentine",
:Dept Name);
);
Betreff: Wie man eine Spalte mit einer Formel in JSL umkodiertWenn Sie das Match verwenden möchten Paradigma müsste es wie folgt strukturiert sein:
FD = Current Data Table();
FD << New Column( "Dog Group", Character, Nominal );
For Each Row(
Dog Group = Match( :Breed #,
"6", "Toy",
"10", "Toy",
"18", "Toy",
"20", "Toy",
"24", "Toy",
"27", "Toy",
"30", "Toy",
"31", "Toy",
"8", "Work",
"9", "Work",
"15", "Work",
"17", "Work",
"21", "Work",
"28", "Work",
"36", "Work",
"1", "Sport",
"14", "Sport",
"23", "Sport",
"26", "Sport",
"29", "Sport",
"33", "Sport"
)
);
Betreff: Wie man eine Spalte mit einer Formel in JSL umkodiertIch denke, Sie können mit Match keinen solchen Vergleich durchführen, Sie müssten alle Werte separat schreiben. Ich würde entweder Assoziatives Array oder Datentabelle verwenden, um die Breed # und Gruppen zu speichern (Sie könnten auch Match verwenden, aber ich denke, die anderen Optionen sind besser). Je nachdem, woher Sie diese Werte bekommen, gibt es viele verschiedene Möglichkeiten, diese aufzubauen.
Betreff: Wie man eine Spalte mit einer Formel in JSL umkodiertHallo!
Ich versuche etwas Ähnliches hier auf JMP 16. Der einzige Unterschied besteht meines Erachtens darin, dass ich in jeder meiner Gruppen mehrere Werte habe. Dies ist die Formel, die ich jetzt versuche:
FD = Current Data Table();
FD << New Column( "Dog Group", Character, Nominal );
For Each Row( Dog Group = Match( :Breed #, "6,10,18,20,24,27,30,31", "Toy", "8,9,15,17,21,28,36", "Work", "1,14,23,26,29,33", "Sport", "3,4,7,13,34,37,42", "Hound", "11,12,16,39", "Herder", "5,19,41", "Extra Fluff", "32,40", "Terrier", "2,25", "Doodle", "22", "Mixed", "35,38", "Other" ) );
Ich habe ursprünglich auch mit einer Formel neu codiert und dies funktioniert in meiner aktuellen Datentabelle - aber ich kann die Formel nicht kopieren/in eine neue Tabelle einfügen (selbst wenn sichergestellt ist, dass die Spaltennamen gleich sind).
Danke für jede Hilfe!
Betreff: Wie man eine Spalte mit einer Formel in JSL umkodiertDas hat perfekt funktioniert! Danke für die Hilfe!
Betreff: Wie man eine Spalte mit einer Formel in JSL umkodiertIch denke, dass Sie auf dem richtigen Weg sind, aber Ihr ursprüngliches Skript hat die ursprünglichen und die Zieldatenspalten verwechselt. Versuchen Sie diese Modifikation:
FD = Current Data Table();
FD << New Column( "Dept Name", Character, Nominal );
For Each Row(
:Dept Name = Match( :Dept,
"100", "Wet Production",
"200", "QA Lab",
"300", "Dry Component",
"400", "Finished Component",
"410", "Microsis",
"415", "Antimicrobial",
"425", "Finished Component Product",
"475", "Special Processing",
"490", "eSIS",
"500", "QC",
"600", "Labeling",
"700", "Sterilization",
"1000", "Shipping and Finished Product Labeling",
"1200", "Quarentine"
);
);