Estoy tratando de descubrir cómo agregar una nueva columna a una tabla que se completará con datos que dependen de otros datos en esa fila. Tenemos varias fermentaciones en un marco de datos. Cada uno tiene un valor en blanco. Me gustaría tener el valor en blanco de cada fermentación en una nueva columna para poder restarlo del valor del tratamiento. Además, si hay una mejor manera de hacer esto que crear una nueva columna, ¡también sería genial! Gracias.
Datos de ejemplo inventados:
| Fermentación | Tratamiento | Valor | Valor en blanco de fermentación |
| A | 1 | 98 | 6 |
| A | 2 | 73 | 6 |
| A | Blanco | 6 | 6 |
| B | 1 | 84 | 5 |
| B | 2 | 86 | 5 |
| B | Blanco | 5 | 5 |
¿El "Valor" cuando Tratamiento = En blanco es siempre menor que el Valor cuando el Tratamiento no está en blanco?Si es así, puedes usar la función ColMin, por Tratamiento.Si no, supongo que una forma algo torpe de hacer algo similar es primero crear una columna que haga que Tratamiento no sea igual a En blanco = 1 y Tratamiento = En blanco igual a cero, y luego usar el enfoque ColMin By.
¿Dónde tendría el valor si no en una nueva columna?
Aquí hay una fórmula para agregarla como una nueva columna.
Col Sum(If(:Treatment == "Blank", :Value, .), :Fermentation)
Cuando intento esta expresión me sale un error que dice
Esperando columna numérica en el acceso o evaluación de 'Col Sum', Col Sum/*###*/IF(:Treatment == "Blank", :Value,.):Fermentation)
La columna "Valor" es numérica continua, por lo que no estoy seguro de qué parte de la expresión no le gusta.
Lo más probable es que la columna Valor de su tabla de datos no tenga formato numérico (muy probablemente un carácter).
Aquí hay un script con una tabla de ejemplo que funciona. Mire en el lado izquierdo las columnas y sus tipos de modelado. El valor es continuo (no puede tener tipo de datos = carácter, tipo de modelado = continuo en JMP (aunque podría tener un nominal numérico que no puede ver directamente desde los tipos de modelado...) .
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(6),
Compress File When Saved(1),
New Column("Fermentation", Character, "Nominal", Set Values({"A", "A", "A", "B", "B", "B"})),
New Column("Treatment",
Character(16),
"Nominal",
Set Values({"1", "2", "Blank", "1", "2", "Blank"})
),
New Column("Value",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([98, 73, 6, 84, 86, 5])
),
New Column("Fermentation Blank Value",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([6, 6, 6, 5, 5, 5])
)
);
dt << New Column("Val", Numeric, Continuous, Formula(
Col Sum(If(:Treatment == "Blank", :Value, .), :Fermentation)
));

Eso debería haber sido mediante fermentación, no mediante tratamiento.