Ich versuche, bestimmte Spalten, die alle mit S beginnen, zu transponieren (und nur diese Spalten beginnen mit S in meinem Datensatz-Sample dt). Manchmal gibt es mehr S-Spalten als andere, daher muss ich eine Liste von Spalten erstellen, die mit S beginnen, damit ich diese Liste an den Transponierungscode übergeben kann. Natürlich gibt es Spalten mit anderen Kopfzeilen.
Ich sehe mindestens 2 andere gelöste Beiträge, die dasselbe verlangen ( link1 und link2 ) aber ich habe Probleme beim Vervielfältigen der Ergebnisse und frage mich, ob es daran liegt, dass JMP14 sich nicht gleich verhält oder ob ich es einfach falsch mache?
Mein Code ist unten, aber hier ist mein Fehler, wenn ich ihn ausführe. Mein Beispiel dt ist beigefügt.
Unterzeichenfolge: Keine Zeichenfolge oder Numerik beim Zugriff oder bei der Auswertung von 'AllCols [i]', AllCols [/ * ### * / i]
Fehler im folgenden Skript mit / * ### * / markiert
Für (i = 1, i <= N Items (AllCols), i ++,
Ob(
Substrate (AllCols [/ * ### * / i], 1, 1) == "S" &
Fehlt (Num (Sub (AllCols [i], 2))) == 0,
Einfügen in (ColList, Num (Substr (AllCols [i], 2)))
)
)
dt= current data table();
AllCols = dt << get column names;
ColList = {};
For( i = 1, i <= N Items( AllCols ), i++,
If( Substr( AllCols[i], 1, 1 ) == "S" & Is Missing( Num( Substr( AllCols[i], 2 ) ) ) == 0,
Insert Into( ColList, Num( Substr( AllCols[i], 2 ) ) )
);
);
// Create Column Lists
For(i=1,i<=nItems(ColList),i++,
ColList[i]=column("S" || char(ColList[i]));
);
Jim, es sieht also so aus, als ob eine der fehlenden Sachen die Spaltennamen als eine Zeichenfolge definierte. Vielen Dank!
Sie haben viel mehr Arbeit geleistet als nötig. Hier ist eine Überarbeitung Ihres Codes
dt = Current Data Table();
AllCols = dt << get column names( string );
ColList = {};
For( i = 1, i <= N Items( AllCols ), i++,
If( Substr( AllCols[i], 1, 1 ) == "S" & Is Missing( Num( Substr( AllCols[i], 2 ) ) ) == 0,
Insert Into( ColList, AllCols[i])
)
);
dt2 = dt << Transpose(
columns( eval( ColList )));