Hola, estoy escribiendo un script para automatizar mis manipulaciones de tablas (principalmente agregar nuevas columnas con fórmulas de coincidencia) para datos con una cantidad variable de contenidos de columnas únicos y resultados finales.
Escribí un script para identificar los contenidos únicos en :SampleID (guardado en Init_IDs) y le pedí al usuario que los renombrara en una ventana emergente que guarda en New_IDs. Luego puedo crear mi nueva columna con una fórmula de coincidencia estándar:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);
Esta fórmula funciona para mi conjunto de datos de prueba donde el tamaño de New_IDs era 6, pero esto cambiará, por lo que me gustaría usar un bucle For para hacerlo flexible, esto es lo que intenté pero no funciona:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);
He comprobado que N elementos (New_ID) generan el valor 6. Probé el bucle For solo sin la combinación con la otra fórmula Match y eso tampoco funciona, así que, si bien el '+' en el medio puede ser en última instancia un problema, el problema principal parece ser mi bucle for en sí.
También intenté simplificarlo con una declaración If en lugar de una fórmula Match, pero tampoco tuve suerte:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);