¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?Hola,
Estoy buscando consejos sobre cómo obtener columnas que contengan ciertas palabras que me interesen.
Por ejemplo:
Me gustaría obtener cualquier nombre de columna que contenga "Número" en los datos de muestra proporcionados a continuación. La lista de nombres de columnas devuelta esperada debe ser {"Número de vuelo", "Número de cola"}. Sin embargo, no puedo obtener nada devuelto. Mis códigos son los siguientes:
dt = open("$SAMPLE_DATA/Air Traffic.jmp");
a= "Number";
col=dt<<GET column="" names=""></GET>
¡Cualquier ayuda o consejo será muy apreciado! ¡Gracias por adelantado!
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?No. El tipo de columna es carácter.
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?Esto es bastante diferente del hilo original.Sugiero crear un nuevo tema.¿Su columna de pasos tiene un tipo de datos numérico?
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?Hola,
Estoy atascado con un problema similar. Necesito verificar si las columnas contienen alguna de las 2 cadenas y luego reemplazar el valor de la columna con el valor en otra columna.
Aquí está el código -
For(i=1,i<= NRows(dt),i++,
if(contains(:step[i],"NA")| contains(:step[i],".") ,
:step[i] = description[i];
)
);
Pero recibo un error que dice: el argumento es de tipo incorrecto en el acceso o la evaluación de 'Contiene'
¿Qué estoy haciendo mal aquí?
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> Gracias de nuevo Ian.
¡Tu solución funciona a las mil maravillas!
Atentamente,
valle
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?Debe distinguir entre una lista y el tipo de elementos que contiene (que, en general, no tienen que ser homogéneos). El error se debe al hecho de que está tratando de colocar la lista xxx (que contiene elementos que son todos caracteres) en una celda de una columna de caracteres.
La mejor manera de hacer esto dependerá de lo que suceda a continuación en su código. Sospecho que es posible que desee tener 'AvaliableColumns' como una columna de expresión, en lugar de una columna de caracteres:
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = {"Number", "Flight"};
col = dt << get column names( string );
nc = N Items( col );
dt1 = New Table( "Table1" );
c1 = (dt1 << New Column( "SelectedNames", character, set values( a ) )) << get values;
dt1 << New Column( "AvailableColumns", expression );
For( j = 1, j <= N Items( c1 ), j++,
xxx = {};
For( i = 1, i <= nc, i++,
If( Contains( col[i], a[j] ), InsertInto(xxx, col[i]) );
);
Column( dt1, 2 )[j] = xxx;
);
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?Hola, Ian Ian@JMP ,
Una extensión de lo que estaba trabajando anteriormente:
Usando los mismos datos que la pregunta anterior, según las palabras seleccionadas que quiero de las columnas disponibles en la tabla de datos "Tráfico aéreo", espero un resultado como el que se muestra a continuación si las columnas disponibles en los datos contienen las palabras en " columna SelectedNames" en sus respectivas filas:

Sin embargo, recibo este mensaje de error en Registro y no inserto ningún nombre de columna correcto en la segunda columna:


Estos son mis códigos, ¿pueden ayudarme a verificar qué tienen de malo?
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = {"Number", "Flight"};
col = dt << get column names( string );
nc = N Items( col );
dt1 = New Table( "Table1" );
c1 = (dt1 << New Column( "SelectedNames", character, set values( a ) )) << get values;
dt1 << New Column( "AvailableColumns", character );
xxx={};
For( j = 1, j <= N Items( c1 ), j++,
For( i = 1, i <= nc, i++,
If( Contains( col[i], a[j] ),
Insert Into( xxx, col[i] )
);
Column( dt1, 2 )[j] = Eval( xxx );
xxx = {};
);
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?¡Gracias, Ian!
Exactamente la solución que estoy buscando.
Atentamente,
valle
Re: ¿Cómo obtener nombres de columnas que contienen ciertas palabras proporcionadas por el usuario?Recuerde que 'col' será una lista. Así que prueba:
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = "Number";
col = dt << get column names( string );
nc = N Items( col );
xxx = {};
For( i = 1, i <= nc, i++,
If( Contains( col[i], a ),
Insert Into( xxx, col[i] )
)
);
Imprimir ( xxx ) ;