Estoy intentando transponer ciertas columnas que comienzan con S (y solo estas columnas comienzan con S en mi conjunto de datos-Ejemplo dt adjunto). A veces hay más columnas S que otras, por lo que necesito crear una lista de columnas que comiencen con S para poder pasar esa lista al código de transposición. Por supuesto hay columnas con otros encabezados.
Veo al menos otras 2 publicaciones resueltas que piden lo mismo ( link1 y link2 ) pero tengo problemas para duplicar los resultados y me pregunto si es debido a que JMP14 no se comporta de la misma manera o tal vez simplemente lo estoy haciendo mal.
Mi código está abajo, pero aquí está mi error cuando lo ejecuto. Se adjunta mi muestra dt.
Subcadena: No es una cadena ni un número en el acceso o evaluación de 'AllCols [i]', AllCols [/ * ### * / i]
En el siguiente script, error marcado por / * ### * /
Para (i = 1, i <= N Items (AllCols), i ++,
Si(
Substr (AllCols [/ * ### * / i], 1, 1) == "S" &
Falta (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, por lo que parece que una cosa clave que faltaba era definir los nombres de las columnas como una cadena. ¡Gracias!
Estabas haciendo mucho más trabajo del que necesitabas. Aquí hay una revisión de su código.
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 )));