cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • New to JMP? Join us Sept. 23-24 for the Early User Edition of Discovery Summit, tailor-made for new users. Register now for free!
  • Your voice matters! Tell us how you prefer to receive JMP updates, so we can tailor our communication to your needs. Take short survey.
  • See how to access JMP Marketplace - and - find, create & share add-ins to extend your JMP. Watch video.

Discussions

Solve problems, and share tips and tricks with other JMP users.
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