Seleccionar columnas contenidas en la lista proporcionada por el usuario<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy tratando de descubrir cómo usar una lista especificada por el usuario para seleccionar las columnas de datos contenidas en la lista.La lista proporcionada por el usuario puede contener más o menos nombres que los presentes en la tabla de datos.Por ejemplo, he intentado lo siguiente, pero parece que no puedo hacerlo funcionar.Cualquier idea sería apreciada.Gracias
dt = open("$SAMPLE_DATA/Big Class.jmp");
// Obtener una lista de nombres de columnas de datos
col_list = dt << Obtener nombres de columnas (String);
// Nombres de columna especificados por el usuario
cc = {sexo, peso, prueba, nuevo, antiguo};
para( i=1, i<=ncol(cc), i++,
si (contiene (col_list, cc ),
Columna ( dt, col_list ) << Conjunto Seleccionado ( 1 )
)
);
Re: Seleccionar columnas contenidas en la lista proporcionada por el usuarioEM,
Gracias por ayudarme con esto.Ahora veo que mi pensamiento sobre qué columna recorrer fue lo que me estaba causando parte de mi dolor anterior.Supuse que pasaría y seleccionaría las columnas enumeradas en la lista de variables de la tabla de datos, no la lista especificada por el usuario.Siempre aprendiendo algo nuevo aquí.Gracias.
Re: Seleccionar columnas contenidas en la lista proporcionada por el usuarioNo estaba investigando los detalles de la salida. Está recorriendo cc, entonces debería referirse a cc en lugar de col_list para obtener el resultado deseado.
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
// Obtener una lista de nombres de columnas de datos
col_list = dt << Obtener nombres de columna ( cadena ) ;
// Nombres de columna especificados por el usuario
CC = { sexo , peso , prueba , nuevo , viejo } ;
Para ( i = 1 , i <= N artículos ( CC ) , i ++,
Si ( Contiene ( col_list , Carbonizarse ( CC [ i ] ) ) ,
Columna ( dt , Carbonizarse ( CC [ i ] ) ) << Conjunto seleccionado ( 1 )
)
) ;
//Esto también funciona
Para ( i = 1 , i <= N elementos ( CC ) , i ++,
Si ( Contiene ( col_list , Carbonizarse ( CC [ i ] ) ) ,
: ( CC [ i ]) << Conjunto seleccionado ( 1 )
)
) ;
Re: Seleccionar columnas contenidas en la lista proporcionada por el usuarioHola MS,
Gracias por los consejos.Aunque el código que proporcionó se ejecuta, no selecciona solo las columnas enumeradas en la lista especificada por el usuario.Por ejemplo, el código mencionado anteriormente selecciona las dos primeras columnas (nombre y sexo) aunque el sexo no se encuentre en la lista especificada por el usuario.Estaba pensando que esta construcción de lista estaba pasando y encontrando esos números de columna en col_list que coinciden con los ubicados en cc y luego seleccionándolos.Parece que en realidad selecciona las columnas según la posición en cc, no el nombre.¿Es posible seleccionar las columnas según los nombres coincidentes, no la posición?
Re: Seleccionar columnas contenidas en la lista proporcionada por el usuarioCasi llegamos. Use N Items() en lugar de ncol() para las listas. Y para hacer coincidir dos elementos, ambos deben ser del mismo tipo de datos. Por lo tanto, proporcione la lista proporcionada por el usuario como una lista de cadenas o use Char() como se muestra a continuación.
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
// Obtener una lista de nombres de columnas de datos
col_list = dt << Obtener nombres de columna ( cadena ) ;
// Nombres de columna especificados por el usuario
CC = { sexo , peso , prueba , nuevo , viejo } ;
Para ( i = 1 , i <= N elementos ( CC ) , i ++,
Si ( Contiene ( col_list , Carbonizarse ( CC [ i ] ) ) ,
Columna ( dt , col_list [ i ] ) << Conjunto seleccionado ( 1 )
)
) ;