Oye,
Estoy tratando de ejecutar un bucle for para clasificar varias columnas de datos. De las 3 o 4 columnas, la columna con el valor más alto dicta una categoría para esa fila completa. Intenté usar esta fórmula en una nueva columna sin éxito. Para referencia, estoy usando un subconjunto de datos que luego guardé como su propio archivo individual.
For( i = 1, i < N Row( :Linked Subset ), i++, If( :Linked Subset[i][5] > :Linked Subset[i][3], :Label = "Hormone", If( :Linked Subset[i][4] > :Linked Subset[i][3] & :Linked Subset[i][6] > :Linked Subset[i][3], :Label = "ImmunoChemo", If( :Linked Subset[i][4] > :Linked Subset[i][3], :Label = "Chemo", If( :Linked Subset[i][6] > :Linked Subset[i][3], :Label = "Immuno", :Label = "None" ) ) ) ) )
Entonces intenté ejecutar este script en su lugar
dt = Open( "~/One Drive/Work/Research/Exported CSV/Subset.jmp" );
For( i = 1, i < N Row( :Linked Subset ), i++,
If( :Linked Subset[i][5] > :Linked Subset[i][3],
:Label = "Hormone",
If( :Linked Subset[i][4] > :Linked Subset[i][3] & :Linked Subset[i][6] > :Linked Subset[i][3],
:Label = "ImmunoChemo",
If( :Linked Subset[i][4] > :Linked Subset[i][3],
:Label = "Chemo",
If( :Linked Subset[i][6] > :Linked Subset[i][3],
:Label = "Immuno",
:Label = "None"
Cualquier ayuda en cuanto a por qué el script o la fórmula no está funcionando es muy apreciada. Admito que estaba un poco perdido al intentar escribir el guión, así que creo que está un poco lejos de lo que debería ser. Vinculé el archivo pero tuve que eliminar la primera columna de la tabla de datos por problemas de privacidad.
Gracias
¡Gracias por aclararlo! Intenté reemplazar (: subconjunto vinculado) con (dt) en la fórmula pero no generó ninguna categoría para la columna designada. También probé su versión limpia, pero aún no funcionó. ¿Alguna idea de por qué todavía hay un problema con la fórmula?
Gracias por toda la ayuda.
JMP se confunde porque está utilizando una referencia de nombre de columna (: subconjunto vinculado) como variable de tabla. También puedes limpiar tus declaraciones if usando solo un IF. No estoy seguro de si esto es exactamente lo que quieres, pero podría darte algunos consejos para que te acerques más a tu objetivo.
dt = Open( "~/One Drive/Work/Research/Exported CSV/Subset.jmp" );
For( i = 1, i < N Row( dt ), i++,
If(dt[i][5] > dt[i][3],
:Label = "Hormone",
dt[i][4] > dt[i][3] & dt[i][6] > dt[i][3],
:Label = "ImmunoChemo",
dt[i][4] > dt[i][3],
:Label = "Chemo",
dt[i][6] > dt[i][3],
:Label = "Immuno",
:Label = "None"
);
);