Wie kopiere und füge ich Datenzellen aus verschiedenen ID-Zellen ein?Hallo,
Ich habe ein Beispiel für eine Datentabelle in diesem Beitrag. Ich muss die Informationen aus ProTest-Zellen von Phase B nach Phase A in derselben Spalte kopieren. Allerdings muss ich zuerst die Test_IDs nach folgender Regel abgleichen:
Phase A <-> Phase B
1 11
3 13
5 15
7 17
9 19
Aufgrund fehlender Daten habe ich unterschiedliche Teilnehmerzahlen.
Wie kann ich das bitte machen?
Vielen Dank!
Betreff: Wie kopiere ich Datenzellen aus verschiedenen ID-Zellen und füge sie ein?Hoppla!Das Skript erhält immer nur den ersten Wert, der Phase A ist.Ändern Sie die Anweisung also mit einem zusätzlichen Filter & :Phase=="B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
Betreff: Wie kopiere ich Datenzellen aus verschiedenen ID-Zellen und füge sie ein?Toll, @gzmorgan0 !! Hat funktioniert!!
Wo kann ich mehr über diese Befehle erfahren, z Holen Sie sich die Zeilen where () und nrow( ) und andere, um die volle Kontrolle über Zeilen und Spalten zu haben?Akzeptiert nrow( ) eine Ganzzahl darin, falls ich das Scrollen des Vektors durch JMP einschränken möchte?
Ich werde versuchen, mich an mein Problem anzupassen... _/\_
Vielen Dank!!
Betreff: Wie kopiere ich Datenzellen aus verschiedenen ID-Zellen und füge sie ein?Hoppla!Das Skript erhält immer nur den ersten Wert, der Phase A ist.Ändern Sie die Anweisung also mit einem zusätzlichen Filter & :Phase=="B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
Betreff: Wie kopiere ich Datenzellen aus verschiedenen ID-Zellen und füge sie ein?Hallo @gzmorgan0
Vielen Dank für Ihre Lösung! Nur eine Punktzahl konnte nicht von Phase B in Phase A kopiert werden. Es ist Test_id = 9 (gleiche IDs). Ich habe nicht verstanden, warum.
Ihr Skript ist beigefügt.
Vielen Dank!
Betreff: Wie kopiere ich Datenzellen aus verschiedenen ID-Zellen und füge sie ein?Sie sollten sich das assoziative Array von JMP ansehen. Stellen Sie sich ein assoziatives Array als eine verschlüsselte Liste vor. Sie definieren den Schlüssel und die zugehörigen Werte. Schlüssel können Zeichenfolgen, Ausdrücke, Listen und fast alles außer numerischen Dezimalwerten sein. Ganzzahlen sind in Ordnung.Siehe das geänderte Skript unten. In anderen Skriptsprachen wird ein assoziatives Array als Wörterbuch bezeichnet. Ich benutze es oft.
Die Antwort auf Ihre andere Frage lautet „Ja“. Fügen Sie weitere Filtervariablen hinzu.
Viel Glück.
Names Default to Here(1);
dt = Data Table("example2_modified");
decode_aa = Associative Array({1,2,5,8,9}, {20,22,55,18,9});
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = decode_aa[ :Test_ID[i] ];
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For iBetreff: Wie kopiere ich Datenzellen aus verschiedenen ID-Zellen und füge sie ein?Brillant, @gzmorgan0 ! 

Ich habe zwei Fragen:
1. Falls ich weitere „Filter“ oder „Nach“ hinzufügen möchte, sollte ich weitere Variablen erstellen (z. B. UID, TID) und diese in die Funktion „Zeilen abrufen, wo ()“ einfügen und & „Spaltenname =“ hinzufügen = 'neue Variable'"?
2. Wenn die Test_id „nicht“ als logische Folge wie „Summe 10“ definiert werden kann, glauben Sie bitte, dass es möglich ist, beispielsweise vor (oder innerhalb) „For-Schleifenanweisung“ eine Matrix zu erstellen, die jede Test_id verknüpft? Phase A zu Phase B? Auf diese Weise könnte der Benutzer eine beliebige Zuordnung zwischen IDs in beiden Phasen definieren.
Ich möchte Ihnen für Ihre Hilfe danken!
Am besten!
PS: Diesem Beitrag ist ein Vorschlag für die folgende Verknüpfung beigefügt, und ich habe Ihr Skript dort eingefügt:
Phase A Phase B
1 20
2 22
5 55
8 18
9 9
Betreff: Wie kopiere ich Datenzellen aus verschiedenen ID-Zellen und füge sie ein?Obwohl Ihre Tabelle sortiert und übersichtlich ist, geht dieses Skript nicht davon aus und lässt sogar die Möglichkeit zu, dass es keinen entsprechenden ProTest gibt.
Names Default to Here(1);
dt = Data Table("example2");
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = :Test_ID[i] +10;
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For i