回复: Comment les noms de colonnes en double ne peuvent-ils pas être extraits de la « Formule d'étiquette de feuille » du modèle d'arbre de décision ?
Comment obtenir des noms de colonnes non dupliqués à partir de la « formule d'étiquette de feuille » du modèle d'arbre de décision ?Par exemple, utilisez le JSL suivant pour obtenir la formule d'étiquette de feuille. Extrayez les noms de colonnes de la formule dans les 10 premières lignes.
Merci!
d0 = Open( "$SAMPLE_DATA/Equity.jmp" );
p=Partition(
Y( :BAD ),
X(
:LOAN, :MORTDUE, :VALUE, :REASON, :JOB, :YOJ, :DEROG, :DELINQ, :CLAGE, :NINQ,
:CLNO, :DEBTINC
),
Validation Portion( 0.3 )
);
p<<GO></GO>
Automatisation et scripts回复: Comment les noms de colonnes en double ne peuvent-ils pas être extraits de la « Formule d'étiquette de feuille » du modèle d'arbre de décision ?Current Data Table( d0 );
txt = "";
For( i = 1, i <= 10, i++,
If( i == 1,
a = "",
a = "aaa"
);
nn = d0[i, "Leaf Label Formula"];
txt = txt || a || nn;
);
tx = "ccc\!n" || Substitute( txt, "&", "\!n", "aaa", "\!n", " or Missing", "", " not Missing", "", " Is Missing", "" );
tx = Substitute( tx, ">", "\!t>", "<", "\!t<", "(", "\!t(" );
d1 = Open( Char To Blob( tx ), "text" );
d2 = d1 << Summary( Group( ccc ), Freq( 0 ), Weight( 0 ), Link to original data table( 0 ) );Re : Comment obtenir des noms de colonnes non dupliqués à partir de la « formule d'étiquette de feuille » du modèle d'arbre de décision ?Vous pouvez parcourir tous les noms de colonnes possibles et si une correspondance est trouvée, l'ajouter au tableau associatif (et le supprimer de la liste des colonnes si vous le souhaitez)
Names Default To Here(1);
input_cols = {"LOAN", "MORTDUE", "VALUE", "REASON", "JOB", "YOJ", "DEROG", "DELINQ", "CLAGE", "NINQ", "CLNO", "DEBTINC"};
dt = Open("$SAMPLE_DATA/Equity.jmp");
part = dt << Partition(
Y(:BAD),
X(Eval(input_cols)),
Validation Portion(0.3)
);
part << go;
part << save leaf label formula;
part << close window;
aa_cols = Associative Array();
For Each({row_val}, dt[1::10, "Leaf Label Formula"],
input_cols_temp = input_cols;
For Each({input_col, idx}, input_cols,
If(Contains(row_val, input_col),
aa_cols[input_col] = 1;
Remove From(input_cols_temp, idx);
);
);
input_cols = input_cols_temp;
);