Sto tentando di trasporre alcune colonne che iniziano tutte con S (e solo queste colonne iniziano con S nel mio set di dati-Esempio dt allegato). A volte ci sono più colonne S di altre, quindi ho bisogno di creare un elenco di colonne che iniziano con S in modo da poter passare quell'elenco al codice transpose. Naturalmente ci sono colonne con altre intestazioni.
Vedo almeno altri 2 post risolti che stanno chiedendo la stessa cosa ( link1 e link2 ) ma sto avendo problemi a duplicare i risultati e mi chiedo se è dovuto a JMP14 che non si comporta allo stesso modo o forse sto solo sbagliando?
Il mio codice è sotto, ma qui è il mio errore quando lo eseguo. Il mio esempio dt è allegato.
Sottostringa: non una stringa o un numero in accesso o valutazione di 'AllCols [i]', AllCols [/ * ### * / i]
Nel seguente script, errore contrassegnato da / * ### * /
Per (i = 1, i <= N Items (AllCols), i ++,
Se(
Sottostrumento (AllCols [/ * ### * / i], 1, 1) == "S" &
Manca (Num (Substr (AllCols [i], 2))) == 0,
Insert Into (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, quindi sembra che una cosa fondamentale che mi mancava era definire i nomi delle colonne come una stringa. Grazie!
Stavi facendo molto più lavoro del necessario. Ecco una rielaborazione del tuo codice
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 )));