Erstellen eines JMP 12 Recode-Skripts aus einer Nachschlagetabelle, die ursprüngliche und neue Werte enthält<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe diesen Eintrag heute im Hauptblog von JMP gepostet.Jeff schlug vor, dass es hilfreich wäre, diesen Inhalt auch auf meinem Community-Blog zu teilen, damit er auch hier durchsuchbar ist.Ich nutze die überarbeitete JMP 12 Recode-Plattform seit ihren Anfängen ziemlich häufig und fand sie bei vielen meiner Datenbereinigungsprojekte hilfreich.Aber als Erstanwender anzufangen, hatte seine Nachteile ... um herauszufinden, warum, lesen Sie weiter!
Ich habe kürzlich ein verwendet JMP-Add-In Ich habe geschrieben, dass ich meinen kompletten Satz an BodyMedia FIT-Ernährungsprotokolldateien importieren möchte, einschließlich der Daten vom 21. Dezember 2010 bis zum letzten Tag, an dem ich meine Mahlzeiten in dieser Software protokolliert habe, dem 29. März 2015. Meine endgültige Datentabelle enthielt 39.942 Zeilen mit Namen von Lebensmitteln. In Kombination mit den 60 Tagen (1.551 Zeilen) an Daten aus meinem MyFitnessPal-Ernährungsprotokoll, das ich führe, seit ich Ende März letzten Jahres von BodyMedia auf ein FitBit Charge HR umgestiegen bin, verfüge ich über fast 41.000 Zeilen mit Ernährungsprotokolldaten!
Ein wesentlicher Schritt in meinem Datenvorbereitungsprozess für diese Datentabelle bestand darin, die Namen der Lebensmittelartikel zu bereinigen, indem ähnliche Artikel unter einem einzigen Wert zusammengefasst wurden. Ohne diesen Aufräumschritt erhalte ich viele eindeutige Artikelnamen, die tatsächlich dasselbe Lebensmittel repräsentieren. Ich habe zum Beispiel verschiedene dunkle Schokoladensorten gegessen und die korrekten Markennamen angegeben, sofern verfügbar, musste sie aber oft ersetzen, da viele bestimmte Artikel nicht in der BodyMedia-Datenbank verfügbar waren. Dadurch wurden genaue Namen noch weniger aussagekräftig, sodass ich es für sinnvoll hielt, alle Sorten unter einem einzigen Namen („Candy Bar, Dark Chocolate“) zusammenzufassen.
Ich habe die Lebensmittelprotokolldatentabelle, die ich letzten Herbst auf dem Discovery Summit vorgestellt hatte, mithilfe der Recode-Plattform in einer Early-Adopter-Installation von bereinigt JMP 12. Damals fehlten Recode die neuen Optionen zum Speichern/Laden von Skripten, auf die ich mich jetzt bei allen meinen Datenbereinigungsprojekten verlasse. Stattdessen habe ich meine Artikel neu codiert und eine Nachschlagetabelle erstellt, in der die ursprünglichen und neu codierten Namen für jeden einzelnen Artikel aufgeführt sind, der in meinem Lebensmittelprotokoll auftauchte. Ich habe diese Nachschlagetabelle jedes Mal aktualisiert, wenn ich neue Artikel zu meinem Lebensmittelprotokoll hinzugefügt habe. Ein Abschnitt meiner Nachschlagetabelle ist unten dargestellt.

Bevor ich ging, um daran teilzunehmen QS15 Bei der Konferenz im letzten Monat in San Francisco habe ich JMP-Formelspalten genutzt, um ein Skript zu erstellen, das in das Dialogfeld „Neu kodieren“ geladen werden konnte, um meine Artikelgruppierungen neu zu erfassen, damit ich sie aktualisieren konnte. Dies machte es einfach, neue Lebensmittelnamen neu zu kodieren und das aktualisierte Skript zu speichern, falls ich meine Arbeit in Zukunft optimieren musste.
Da ich diesen Trick zur Skripterstellung so nützlich fand, dachte ich, ich würde ihn mit Ihnen teilen. Wenn Sie in der Vergangenheit einen ähnlichen Lookup-Table-Ansatz verwendet haben, denken Sie vielleicht, dass es viel Arbeit wäre, Ihren Ansatz in Recode neu zu erstellen. Anhand dieses Beispiels können auch Sie von einer Nachschlagetabelle zu einem JMP 12 Recode-Skript wechseln, das Sie im Dialogfeld „Recode“ neu laden und aktualisieren können, um neue Daten aufzunehmen. Am Ende können Sie ganz einfach eine neue Version Ihrer Nachschlagetabelle aus Ihrer endgültigen Datentabelle neu erstellen, die die ursprünglichen und neu codierten Werte enthält.
Ich musste mein Skript so strukturieren, dass es mit einem Standard-Recode-Skript identisch war, also öffnete ich eines, das ich für ein verwandtes Projekt gespeichert hatte. Um ein Beispiel-Recode-Skript zu speichern, können Sie in einem geöffneten Recode-Dialogfenster einige Gruppen erstellen, dann auf das rote Dreieck der Plattform klicken und „Skript“ > „In Datei speichern“ wählen.
Ich öffnete die JSL-Datei mit dem Recode-Skript und stellte fest, dass es mit einem Aufruf begann, mit der Aktualisierung der Tabelle zu beginnen, und einer Reihe von Match-Anweisungen, die den ursprünglichen Elementnamen mit dem neu codierten Namen verknüpften.

Am Ende des Skripts wurden der Spaltenname und das Ende der Datenaktualisierung angegeben.

Um die Liste der gepaarten ursprünglichen und umcodierten Namen zu ergänzen, die zwischen dem Anfangs- und dem Endabschnitt lagen, habe ich in meiner Nachschlagetabelle eine neue Formelspalte erstellt, die Versionen des ursprünglichen Elementnamens und des umcodierten Elementnamens in Anführungszeichen enthält.

Ich habe die Formelspalte kopiert und in ein Skriptfenster eingefügt und dann die richtigen Anweisungen und Variablennamen oben und unten im Skript hinzugefügt.
Als ich es im Dialogfeld „Neu kodieren“ neu lud, erstellte mein Skript Gruppierungen wie diese:

Ich könnte dann bestehende Gruppen ergänzen, neue erstellen oder die repräsentativen Gruppennamen bearbeiten. Ich habe einen ähnlichen Ansatz verwendet, um eine Version meines Skripts zum Umkodieren von Artikeln in Lebensmittelgruppierungen zu erstellen, da ich Lebensmittelgruppen in meine Nachschlagetabelle aufgenommen hatte und meine neuen Artikel gruppieren wollte.
Ein Problem, auf das ich gestoßen bin, war, dass der Name eines Lebensmittels ein doppeltes Anführungszeichen (“) enthielt, das ich ersetzen musste, damit es die in Anführungszeichen gesetzten Zeichenfolgen der Artikelnamen nicht beeinträchtigte.
Ich hoffe, Sie probieren die JMP 12 Recode-Plattform aus, falls Sie es noch nicht getan haben. Egal, ob Sie ein neues Projekt starten oder ein altes umwandeln, um die Plattform zu nutzen, ich denke, Sie werden zufrieden sein!Wenn Sie es bereits nutzen, würde es mich interessieren, an welchen Projekten Sie arbeiten!