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!
  • Use World Cup data to build models, explore spatial relationships, and create informative visualizations in JMP. Register. July 17, 2 pm US Eastern Time.
  • Your voice matters! Tell us how you prefer to receive JMP updates, so we can tailor our communication to your needs. Take short survey.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
gmc5149
Level I

How do I create a new data table combining duplicate rows?

I have a indexed list of production runs of different products (A-H) and their start and end times. Sometimes there are two lines in a row with the same product (rows 1 & 2 and 7 & 8) and I would like those to be combined into one row with the start time of the first row and end time of the second row. How would I use JSL to do this?

 

gmc5149_0-1713457204801.png

 

1 ACCEPTED SOLUTION

Accepted Solutions
jthi
Super User

Re: How do I create a new data table combining duplicate rows?

I think this should do what you want.

 

Add new (numeric) column to your table to calculate "groups" with formula like

If(Row() == 1,
	counter = 0;
);
If(:Product != Lag(:Product),
	counter++;
);
counter;

Then you can use Summary table to perform the min/max part

jthi_1-1713458056939.png

Remove and re-order columns from summary table as needed

 

Here is a script from Enhanced Log to perform those actions

 

// Open Data Table: Run Time Index.jmp
// → Data Table("Run Time Index")
Open("$DOWNLOADS/Run Time Index.jmp");

// New column: R
Data Table("Run Time Index") << New Column("R",
	Numeric,
	"Continuous",
	Format("Best", 12),
	Formula(
		If(Row() == 1, counter = 0);
		If(:Product != Lag(:Product),
			counter
			++);
		counter;
	)
);

// Data table summary
// → Data Table("Run Time Index By (R, Product)")
Data Table("Run Time Index") << Summary(
	Group(:R, :Product),
	Min(:Run Index),
	Min(:Start),
	Max(:End),
	Freq("None"),
	Weight("None"),
	statistics column name format("column"),
	Link to original data table(0)
);

// Delete columns
Data Table("Run Time Index By (R, Product)") << Delete Columns(:R, :N Rows);

// Move selected column: Run Index
Data Table("Run Time Index By (R, Product)") << Move Selected Columns({:Run Index}, To First);

// Change column modeling type: Run Index
Data Table("Run Time Index By (R, Product)"):Run Index << Set Modeling Type("Ordinal");

 

 

-Jarmo

View solution in original post

3 REPLIES 3
jthi
Super User

Re: How do I create a new data table combining duplicate rows?

I think this should do what you want.

 

Add new (numeric) column to your table to calculate "groups" with formula like

If(Row() == 1,
	counter = 0;
);
If(:Product != Lag(:Product),
	counter++;
);
counter;

Then you can use Summary table to perform the min/max part

jthi_1-1713458056939.png

Remove and re-order columns from summary table as needed

 

Here is a script from Enhanced Log to perform those actions

 

// Open Data Table: Run Time Index.jmp
// → Data Table("Run Time Index")
Open("$DOWNLOADS/Run Time Index.jmp");

// New column: R
Data Table("Run Time Index") << New Column("R",
	Numeric,
	"Continuous",
	Format("Best", 12),
	Formula(
		If(Row() == 1, counter = 0);
		If(:Product != Lag(:Product),
			counter
			++);
		counter;
	)
);

// Data table summary
// → Data Table("Run Time Index By (R, Product)")
Data Table("Run Time Index") << Summary(
	Group(:R, :Product),
	Min(:Run Index),
	Min(:Start),
	Max(:End),
	Freq("None"),
	Weight("None"),
	statistics column name format("column"),
	Link to original data table(0)
);

// Delete columns
Data Table("Run Time Index By (R, Product)") << Delete Columns(:R, :N Rows);

// Move selected column: Run Index
Data Table("Run Time Index By (R, Product)") << Move Selected Columns({:Run Index}, To First);

// Change column modeling type: Run Index
Data Table("Run Time Index By (R, Product)"):Run Index << Set Modeling Type("Ordinal");

 

 

-Jarmo
gmc5149
Level I

Re: How do I create a new data table combining duplicate rows?

thank you!

txnelson
Super User

Re: How do I create a new data table combining duplicate rows?

 

 

 

Jim

Recommended Articles