cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Register to attend Discovery Summit 2025 Online: Early Users Edition, Sept. 24-25.
  • New JMP features coming to desktops everywhere this September. Sign up to learn more at jmp.com/launch.
Choose Language Hide Translation Bar
hcarr01
Level VI

Formula

Bonjour, je cherche à construire une colonne de test :

 

hcarr01_0-1739172787005.png

 

A partir du script suivant :

 

dt11 = current data table();
// Choisir colonnes commençant par employes dur_cols = Filter Each( {col_name}, dt11 << Get Column Names( "String", Nominal ), Starts With( col_name, "employes " ) ); // Nouvelle colonne dt11 << New Column( "TEST EMPLOYES", Numeric, "Continuous", Format( "Best", 12 ) ); // Modifier la formule de colonne : TEST EMPLOYES dt11:TEST EMPLOYES << Set Formula( For( i = 1, i < n items(dur_cols), i++, If( (dur_cols[i] == dur_cols[i+1] | Is Missing( dur_cols[i+1] )), :TEST EMPLOYES = 1 , :TEST EMPLOYES = 0 ) ) );

L'objectif est d'avoir des 0 ou des 1 dans la colonne TEST EMPLOYES en fonction des conditions dans la boucle if... Pour le moment je n'arrive pas à créer la colonne test employes avec les valeurs 0 ou 1.

 

Merci de votre aide

1 ACCEPTED SOLUTION

Accepted Solutions
jthi
Super User

Re: Formula

Doing the calculation from the original column is most likely easier

Names Default To Here(1);

dt = New Table("Untitled",
	Add Rows(3),
	Compress File When Saved(1),
	New Column("Column",
		Character,
		"Nominal",
		Set Values({"1-1-3", "2-2-2", "3-3", ""})
	),
	New Column("Column 1", Character, "Nominal", Set Values({"1", "2", "3", ""})),
	New Column("Column 2", Character, "Nominal", Set Values({"1", "2", "3", ""})),
	New Column("Column 3", Character, "Nominal", Set Values({"3", "2", "", ""}))
);

dt << New Column("R", Numeric, Nominal, Formula(
	res = Associative Array(Words(:Column , "-")) << get keys;
	Remove From(res, Contains(res, "")); // remove missing value
	N Items(res) == 1;
));

jthi_0-1739188538668.png

Not sure how fully missing row should be taken into account, in this case it is treated as 0 but it can be changed to one modifying the final comparison

-Jarmo

View solution in original post

3 REPLIES 3
jthi
Super User

Re: Formula

What are the conditions when 1 or 0 should be added?

-Jarmo
hcarr01
Level VI

Re: Formula

Je pars d'une colonne employé, dans laquelle il y a plusieurs champs renseigné comme par exemple "611 - 2000 - 300", il peut y avoir plus de 3 champs renseigné.

 

Dans mon script je divise cette colonne à partir du séparateur "-", donc il y a autant de colonne "employe..." que de champs dans la première colonne "employe".

 

Condition TEST EMPLOYE = 1 :

Toutes les colonnes employés crées sont égales ou valeur manquantes

 

Condition TEST EMPLOYE = 0 :

Données différentes dans les colonnes employés crées (ne pas prendre en compte quand la colonne est vide)

 

 

Exemple 1 :

colonne employé 1 : 300

colonne employé 2 : 300

colonne employé 3 : 500

 

TEST EMPLOYE = 0

 

Exemple 2 :

colonne employé 1 : 300

colonne employé 2 : 300

colonne employé 3 : 

 

TEST EMPLOYE = 1

 

jthi
Super User

Re: Formula

Doing the calculation from the original column is most likely easier

Names Default To Here(1);

dt = New Table("Untitled",
	Add Rows(3),
	Compress File When Saved(1),
	New Column("Column",
		Character,
		"Nominal",
		Set Values({"1-1-3", "2-2-2", "3-3", ""})
	),
	New Column("Column 1", Character, "Nominal", Set Values({"1", "2", "3", ""})),
	New Column("Column 2", Character, "Nominal", Set Values({"1", "2", "3", ""})),
	New Column("Column 3", Character, "Nominal", Set Values({"3", "2", "", ""}))
);

dt << New Column("R", Numeric, Nominal, Formula(
	res = Associative Array(Words(:Column , "-")) << get keys;
	Remove From(res, Contains(res, "")); // remove missing value
	N Items(res) == 1;
));

jthi_0-1739188538668.png

Not sure how fully missing row should be taken into account, in this case it is treated as 0 but it can be changed to one modifying the final comparison

-Jarmo

Recommended Articles