Hola, estoy escribiendo un script para automatizar las manipulaciones de mi tabla (principalmente agregando nuevas columnas con fórmulas de coincidencia) para datos con un número variable de contenido de columna único y salidas finales.
Escribí un script para identificar los contenidos únicos en: SampleID (guardado en Init_IDs) y le pedí al usuario que los cambiara el nombre 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á, así que me gustaría usar un For Loop para hacerlo flexible, esto es lo que he probado 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_IDs) genera el valor 6. Probé el For Loop solo sin la combinación con la otra fórmula Match y eso tampoco funciona, así que aunque el '+' en el medio puede ser un problema, el problema principal parece ser mi propio ciclo for.
También intenté simplificarlo con una declaración If en lugar de una fórmula Match, tampoco tuve suerte:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);