¿Cómo funcionan las operaciones que involucran dos tablas de datos separadas?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Por ejemplo, cuando quiero dividir cada valor de la columna 1 de la tabla de datos 1 por cada valor de la columna 2 de la tabla de datos 2 . Parece que tengo problemas para hacerlo y me pregunto por qué aparece este error "El acceso a la tabla de datos con ámbito requiere una columna o variable de la tabla de datos{1} en el acceso o la evaluación de 'dtbinsum:column', dtbinsum:column/*### */(Nfilas ) /*###*/"
La parte de mi script se ve así:
//Inicio del guión
dt = tabladatosactuales();
dtbinsum = dt << Resumen(
Grupo( :Archivo de datos, :ID de lote, :SBIN ),
Frecuencia( "Ninguno"),
Peso( "Ninguno"),
formato de nombre de columna de estadísticas ("columna"),
Enlace a la tabla de datos original ( 0 )
);
dtbinsum<< Seleccione Donde( dtbinsum:sbin != 1 );
dtbinsum<< Eliminar filas;
dtbinsum2 = dt << Resumen(
Grupo (: ID de lote),
N(:SBIN),
Frecuencia( "Ninguno"),
Peso ("Ninguno")
);
rendimiento = {};
for(i=0, i
yield_temp = (dtbinsum:column(Nrows ))/(dtbinsum2:columna(N(SBIN) ));
Insertar en (rendimiento, rendimiento_temp);
);
Mostrar (rendimiento);
//Fin del guion
Sé que mi manera probablemente no sea la forma más eficiente de hacerlo, sin mencionar el error que se muestra, pero ¿alguien tiene una solución para esto?
Re: ¿Cómo funcionan las operaciones que involucran dos tablas de datos separadas?esto es lo lejos que llegué antes de recibir el siguiente error:
Nombre no resuelto: en acceso o evaluación de " , Nombre(" ")/*###*/
código:
dt1 = tabla de datos ( "mesa principal" ) ;
dt2 = tabla de datos ( "División de la tabla REF" ) ;
columnas = dt1 << obtener nombres de columna ( cuerda ) ;
por ( i = 2 , i <= n columnas ( dt1 ) , i ++,
una columna = columnas [ i ] ;
vals = ( Columna ( dt1 , una columna ) << obtener valores )
( Columna ( dt2 , una columna ) << obtener valores ) ;
dt1 << NuevaColumna ( una columna , Numérico , Valores ( vals )) ;
) ;
el script logra hacer un giro en el bucle creando así una columna con valores correctos.
Re: ¿Cómo funcionan las operaciones que involucran dos tablas de datos separadas?¿Podría darme sugerencias sobre cómo modifico su fórmula para que funcione en un bucle for?
debería hacer lo mismo que su secuencia de comandos, pero para todas las columnas, el nombre de la nueva tabla debería ser el encabezado de la columna deseada + Cociente
dt1 = tabla de datos ("tabla principal");
dt2 = tabla de datos ("tabla de referencia");
columnas = dt << obtener nombres de columna ( cuerda ) ;
for ( i = 2, i <= N columnas (miTabla), i++,
// Probé diferentes versiones de una referencia a las columnas en mi tabla principal pero no puedo hacer que funcione
vals = ( Columna ( dt1 , columna(yo) ) << obtener valores )
( Columna ( dt2 , columna(yo ) ) << obtener valores ) ;
dt1 << NuevaColumna (columnas , Numérico , Continuo , Valores ( vals )) ;
);
BR
Anders
Re: ¿Cómo funcionan las operaciones que involucran dos tablas de datos separadas?Gracias Ian, ahora que señalaste que se trata de operaciones sabias de elementos, ahora tiene mucho sentido.
Re: ¿Cómo funcionan las operaciones que involucran dos tablas de datos separadas?( Columna ( dt1 , "Numerador" ) << obtener valores ) coloca los valores de la columna especificada en un vector de fila (que, en el ejemplo, es el mismo que v1). ( Columna ( dt2 , "Denominador" ) << obtener valores ) hace lo mismo con la otra columna (que en realidad es el mismo vector de fila que v2). Entonces el
El operador solicita una división por elementos, es decir, divide el primer elemento del primer vector por el primer elemento del segundo vector para obtener el primer elemento del vector de resultado (y así sucesivamente para los otros elementos).
Eche un vistazo a la sección 'Matrices' en el Capítulo 7 de 'Ayuda > Libros > Guía de secuencias de comandos'.
Re: ¿Cómo funcionan las operaciones que involucran dos tablas de datos separadas?Gracias Ian, me funciona, pero ¿puedo preguntarte sobre esta línea en particular?
vals = ( Columna ( dt1 , "Numerador" ) << obtener valores )
( Columna ( dt2 , "Denominador" ) << obtener valores ) ;
^
La forma en que entiendo JSL es que los dos puntos ayudan a identificar columnas, si se usan así, ¿cómo funciona?
Re: ¿Cómo funcionan las operaciones que involucran dos tablas de datos separadas?Algo como esto tal vez:
Nombres predeterminados a aquí ( 1 ) ;
// Hacer un par de tablas
v1 = j ( 10 , 1 , Entero aleatorio ( 1 , 5 )) ;
v2 = j ( 10 , 1 , Entero aleatorio ( 1 , 5 )) ;
dt1 = NuevaTabla ( "Tabla 1" , NuevaColumna ( "Numerador" , Numérico , Ordinal , Valores ( v1 ))) ;
dt2 = NuevaTabla ( "Tabla 2" , NuevaColumna ( "Denominador" , Numérico , Ordinal , Valores ( v2 ))) ;
// Agrega una columna de cociente a la Tabla 1
Esperar ( 3 ) ;
vals = ( Columna ( dt1 , "Numerador" ) << obtener valores )
( Columna ( dt2 , "Denominador" ) << obtener valores ) ;
dt1 << NuevaColumna ( "Cociente" , Numérico , Continuo , Valores ( vals )) ;