cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP will suspend normal business operations for our Winter Holiday beginning on Wednesday, Dec. 24, 2025, at 5:00 p.m. ET (2:00 p.m. ET for JMP Accounts Receivable).
    Regular business hours will resume at 9:00 a.m. EST on Friday, Jan. 2, 2026.
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.

Discussions

Solve problems, and share tips and tricks with other JMP users.
%3CLINGO-SUB%20id%3D%22lingo-sub-737626%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EC%C3%B3mo%20crear%20una%20tabla%20de%20datos%20de%203%20columnas%20por%20fila%20a%20partir%20de%20una%20cadena%20num%C3%A9rica%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-737626%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ESoy%20nuevo%20en%20JSL.%20Tengo%20una%20cadena%20de%20texto%20que%20contiene%20valores%20separados%20por%20%22%23%22.%20Los%20n%C3%BAmeros%20deben%20agruparse%20en%203%20columnas.%3C%2FP%3E%3CP%3ES%C3%A9%20que%20puedo%20escribir%20un%20c%C3%B3digo%20para%20poner%20los%20valores%20en%20columnas%20separadas%20por%20%22%23%22%2C%20pero%20%C2%BFc%C3%B3mo%20puedo%20crear%20una%20tabla%20de%203%20valores%20en%20cada%20fila%2C%20hasta%20que%20la%20tabla%20est%C3%A9%20completa%3F%20S%C3%A9%20que%20probablemente%20tambi%C3%A9n%20tendr%C3%A9%20que%20eliminar%20el%20primer%20%22%23%22%20para%20evitar%20problemas%2C%20ya%20que%20los%20primeros%203%20n%C3%BAmeros%20estar%C3%ADan%20en%20la%20segunda%20a%20la%20cuarta%20columna.%3C%2FP%3E%3CP%3E%20%3C%2FP%3E%3CP%3EPor%20ejemplo%3A%3C%2FP%3E%3CTABLE%20border%3D%220%22%20cellspacing%3D%220%22%20cellpadding%3D%220%22%3E%3CTBODY%3E%3CTR%3E%3CTD%3E%231%230%2C93%230%2C99%232%231%2C92%231%2C99%233%232%2C9%232%2C99%234%233%2C86%233%2C98%235%234%2C85%234%2C98%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CP%3Epuede%20ir%20a%20esto%3A%3C%2FP%3E%3CTABLE%20border%3D%220%22%20cellspacing%3D%220%22%20cellpadding%3D%220%22%3E%3CTBODY%3E%3CTR%3E%3CTD%3E%3CP%3E1%3C%2FP%3E%3C%2FTD%3E%3CTD%3E0%2C93%3C%2FTD%3E%3CTD%3E0%2C99%3C%2FTD%3E%3CTD%3E2%3C%2FTD%3E%3CTD%3E1%2C92%3C%2FTD%3E%3CTD%3E1%2C99%3C%2FTD%3E%3CTD%3E3%3C%2FTD%3E%3CTD%3E2.9%3C%2FTD%3E%3CTD%3E2%2C99%3C%2FTD%3E%3CTD%3E4%3C%2FTD%3E%3CTD%3E3.86%3C%2FTD%3E%3CTD%3E3%2C98%3C%2FTD%3E%3CTD%3E5%3C%2FTD%3E%3CTD%3E4.85%3C%2FTD%3E%3CTD%3E4%2C98%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CP%3EPero%2C%20%C2%BFc%C3%B3mo%20escribo%20el%20c%C3%B3digo%20JSL%20para%20llegar%20a%20esto%3F%3C%2FP%3E%3CTABLE%20border%3D%220%22%20cellspacing%3D%220%22%20cellpadding%3D%220%22%3E%3CTBODY%3E%3CTR%3E%3CTD%3EValor1%3C%2FTD%3E%3CTD%3EValor2%3C%2FTD%3E%3CTD%3EValor3%3C%2FTD%3E%3C%2FTR%3E%3CTR%3E%3CTD%3E1%3C%2FTD%3E%3CTD%3E0%2C93%3C%2FTD%3E%3CTD%3E0%2C99%3C%2FTD%3E%3C%2FTR%3E%3CTR%3E%3CTD%3E2%3C%2FTD%3E%3CTD%3E1%2C92%3C%2FTD%3E%3CTD%3E1%2C99%3C%2FTD%3E%3C%2FTR%3E%3CTR%3E%3CTD%3E3%3C%2FTD%3E%3CTD%3E2.9%3C%2FTD%3E%3CTD%3E2%2C99%3C%2FTD%3E%3C%2FTR%3E%3CTR%3E%3CTD%3E4%3C%2FTD%3E%3CTD%3E3.86%3C%2FTD%3E%3CTD%3E3%2C98%3C%2FTD%3E%3C%2FTR%3E%3CTR%3E%3CTD%3E5%3C%2FTD%3E%3CTD%3E4.85%3C%2FTD%3E%3CTD%3E4%2C98%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CP%3E%20%3C%2FP%3E%3CP%3EEn%20este%20ejemplo%20hay%205%20filas%20en%20la%20tabla%20pero%20el%20n%C3%BAmero%20de%20filas%20puede%20variar.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-737626%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3ECombinaci%C3%B3n%20y%20limpieza%20de%20datos%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-737640%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20C%C3%B3mo%20crear%20una%20tabla%20de%20datos%20de%203%20columnas%20por%20fila%20a%20partir%20de%20una%20cadena%20num%C3%A9rica%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-737640%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EUtilice%20Texto%20a%20columnas%20para%20obtener%20esto%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_0-1711107560989.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1711107560989.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1711107560989.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F62518iCD0A754969AA044D%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jthi_0-1711107560989.png%22%20alt%3D%22jthi_0-1711107560989.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3ELuego%20apile%20sus%20datos%20con%20una%20pila%20de%20series%20m%C3%BAltiples%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_1-1711107598863.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1711107598863.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1711107598863.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F62519iC493BB368E5D46B9%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jthi_1-1711107598863.png%22%20alt%3D%22jthi_1-1711107598863.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3Ey%20finalmente%20eliminar%20columnas%20adicionales%2C%20cambiar%20el%20nombre%20de%20los%20encabezados%20de%20las%20columnas%20y%20corregir%20los%20tipos%20de%20modelado%2Fdatos%20de%20las%20columnas%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_2-1711107678432.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1711107678432.png%22%20style%3D%22width%3A%20729px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1711107678432.png%22%20style%3D%22width%3A%20729px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F62520i21BDF580E23871FE%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jthi_2-1711107678432.png%22%20alt%3D%22jthi_2-1711107678432.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EEl%20script%20creado%20por%20JMP%20es%20un%20buen%20punto%20de%20partida%20para%20el%20JSL%20final%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3E%2F%2F%20Text%20to%20columns%0AData%20Table(%22Untitled%206%22)%20%26lt%3B%26lt%3B%20Text%20to%20Columns(columns(%3AColumn%201)%2C%20Delimiters(%22%23%22))%3B%0A%0A%0A%2F%2F%20Stack%20data%20table%0A%2F%2F%20%E2%86%92%20Data%20Table(%22Untitled%2011%22)%0AData%20Table(%22Untitled%206%22)%20%26lt%3B%26lt%3B%20Stack(%0A%09columns(%0A%09%09%3AColumn%201%201%2C%20%3AColumn%201%202%2C%20%3AColumn%201%203%2C%20%3AColumn%201%204%2C%20%3AColumn%201%205%2C%20%3AColumn%201%206%2C%0A%09%09%3AColumn%201%207%2C%20%3AColumn%201%208%2C%20%3AColumn%201%209%2C%20%3AColumn%201%2010%2C%20%3AColumn%201%2011%2C%0A%09%09%3AColumn%201%2012%2C%20%3AColumn%201%2013%2C%20%3AColumn%201%2014%2C%20%3AColumn%201%2015%0A%09)%2C%0A%09Source%20Label%20Column(%22Label%22)%2C%0A%09Stacked%20Data%20Column(%22Data%22)%2C%0A%09Drop%20All%20Other%20Columns(1)%2C%0A%09Number%20of%20Series(3)%2C%0A%09Output%20Table(%22Untitled%2011.jmp%22)%0A)%3B%0A%0A%0A%2F%2F%20Delete%20columns%0AData%20Table(%22Untitled%2011%22)%20%26lt%3B%26lt%3B%20Delete%20Columns(%3ALabel%2C%20%3ALabel%202%2C%20%3ALabel%203)%3B%0A%0A%0A%2F%2F%20Recode%20column%20names%0ALocal(%7Bdt%20%3D%20Data%20Table(%22Untitled%2011%22)%2C%20names%7D%2C%0A%09names%20%3D%20Recode(%0A%09%09dt%20%26lt%3B%26lt%3B%20Get%20Column%20Names(String)%2C%0A%09%09%7BMap%20Value(%0A%09%09%09_rcOrig%2C%0A%09%09%09%7B%22Data%22%2C%20%22Value1%22%2C%20%22Data%202%22%2C%20%22Value2%22%2C%20%22Data%203%22%2C%20%22Value3%22%7D%2C%0A%09%09%09Unmatched(_rcNow)%0A%09%09)%7D%0A%09)%3B%0A%09For%20Each(%7Bname%2C%20i%7D%2C%20names%2C%20Column(dt%2C%20i)%20%26lt%3B%26lt%3B%20Set%20Name(name))%3B%0A)%3B%0A%0A%0A%2F%2F%20Standardize%20column%20attributes%0ALocal(%7Bold%20dt%20%3D%20Current%20Data%20Table()%7D%2C%0A%09Current%20Data%20Table(Data%20Table(%22Untitled%2011%22))%3B%0A%09For%20Each(%7Bcol%2C%20index%7D%2C%20%7B%3AValue1%2C%20%3AValue2%2C%20%3AValue3%7D%2C%0A%09%09col%20%26lt%3B%26lt%3B%20Data%20Type(Numeric%2C%20Format(%22Best%22%2C%2012))%20%26lt%3B%26lt%3B%0A%09%09Set%20Modeling%20Type(%22Continuous%22)%0A%09)%3B%0A%09Current%20Data%20Table(old%20dt)%3B%0A)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-737724%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20C%C3%B3mo%20crear%20una%20tabla%20de%20datos%20de%203%20columnas%20por%20fila%20a%20partir%20de%20una%20cadena%20num%C3%A9rica%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-737724%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EAqu%C3%AD%20hay%20un%20enfoque%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3ENames%20Default%20To%20Here(%201%20)%3B%0AtheString%20%3D%20%22%231%230.93%230.99%232%231.92%231.99%233%232.9%232.99%234%233.86%233.98%235%234.85%234.98%22%3B%0A%0Adt%20%3D%20New%20Table(%20%22Start%22%2C%0A%09add%20rows(%201%20)%2C%0A%09New%20Column(%20%22string%22%2C%20character%2C%20set%20each%20value(%20theString%20)%20)%0A)%3B%0Adt%20%26lt%3B%26lt%3B%20Text%20To%20Columns(%20delimiter(%20%22%23%22%20)%2C%20columns(%20%3Astring%20)%20)%3B%0Adt%20%26lt%3B%26lt%3B%20delete%20columns(%20%3Astring%20)%3B%0AcolNames%20%3D%20dt%20%26lt%3B%26lt%3B%20get%20column%20names(%20string%20)%3B%0AFor%20Each(%20%7Bcol%7D%2C%20colNames%2C%0A%09Column(%20dt%2C%20col%20)%20%26lt%3B%26lt%3B%20Data%20Type(%20Numeric%2C%20Format(%20%22Best%22%2C%2012%20)%20)%20%26lt%3B%26lt%3B%0A%09Set%20Modeling%20Type(%20%22Continuous%22%20)%0A)%3B%0A%0Adt%20%26lt%3B%26lt%3B%20Stack(%0A%09columns(%20colNames%20)%2C%0A%09Source%20Label%20Column(%20%22Label%22%20)%2C%0A%09Stacked%20Data%20Column(%20%22Value%22%20)%2C%0A%09Number%20of%20Series(%203%20)%2C%0A%09Output%20Table(%20%22Final%22%20)%0A)%3B%0A%0AdtFinal%20%3D%20Current%20Data%20Table()%3B%0AdtFinal%20%26lt%3B%26lt%3B%20delete%20columns(%20%7B%3ALabel%2C%20%3ALabel2%2C%20%3ALabel3%7D%20)%3B%0AdtFinal%3Avalue%20%26lt%3B%26lt%3B%20set%20name(%20%22Value%201%22%20)%3B%0A%0Aclose(%20dt%2C%20nosave)%3B%0A%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22txnelson_0-1711109674657.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22txnelson_0-1711109674657.png%22%20style%3D%22width%3A%20375px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F62527i1E4F24741FFE8973%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22txnelson_0-1711109674657.png%22%20alt%3D%22txnelson_0-1711109674657.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%20%3C%2FP%3E%3C%2FLINGO-BODY%3E
Choose Language Hide Translation Bar
godriscoll
Level I

How to create a data table of 3 columns per row from numeric string

I'm new to JSL. I have a text string that contains values separated by a "#". The numbers are to be grouped in 3 columns

I know I can write a code to put the values in columns being separated by the "#", but how do I then create a table of 3 values in each row, until the table is complete. I know I'll also probably need to remove the first "#" to prevent issues as first 3 numbers would be in 2nd to 4th column.

 

For example:

#1#0.93#0.99#2#1.92#1.99#3#2.9#2.99#4#3.86#3.98#5#4.85#4.98

can go to this:

1

0.930.9921.921.9932.92.9943.863.9854.854.98

But how do I write the JSL code to get it to this:

Value1Value2Value3
10.930.99
21.921.99
32.92.99
43.863.98
54.854.98

 

In this example there are 5 rows in table but the number of rows could vary.

2 REPLIES 2
jthi
Super User

Re: How to create a data table of 3 columns per row from numeric string

Use Text To Columns to get this

jthi_0-1711107560989.png

Then stack your data with multiple series stack

jthi_1-1711107598863.png

and finally remove extra columns, rename column headers and fix column data/modelling types

jthi_2-1711107678432.png

JMP created script is a good starting point for the final JSL

// Text to columns
Data Table("Untitled 6") << Text to Columns(columns(:Column 1), Delimiters("#"));


// Stack data table
// → Data Table("Untitled 11")
Data Table("Untitled 6") << Stack(
	columns(
		:Column 1 1, :Column 1 2, :Column 1 3, :Column 1 4, :Column 1 5, :Column 1 6,
		:Column 1 7, :Column 1 8, :Column 1 9, :Column 1 10, :Column 1 11,
		:Column 1 12, :Column 1 13, :Column 1 14, :Column 1 15
	),
	Source Label Column("Label"),
	Stacked Data Column("Data"),
	Drop All Other Columns(1),
	Number of Series(3),
	Output Table("Untitled 11.jmp")
);


// Delete columns
Data Table("Untitled 11") << Delete Columns(:Label, :Label 2, :Label 3);


// Recode column names
Local({dt = Data Table("Untitled 11"), names},
	names = Recode(
		dt << Get Column Names(String),
		{Map Value(
			_rcOrig,
			{"Data", "Value1", "Data 2", "Value2", "Data 3", "Value3"},
			Unmatched(_rcNow)
		)}
	);
	For Each({name, i}, names, Column(dt, i) << Set Name(name));
);


// Standardize column attributes
Local({old dt = Current Data Table()},
	Current Data Table(Data Table("Untitled 11"));
	For Each({col, index}, {:Value1, :Value2, :Value3},
		col << Data Type(Numeric, Format("Best", 12)) <<
		Set Modeling Type("Continuous")
	);
	Current Data Table(old dt);
);
-Jarmo
txnelson
Super User

Re: How to create a data table of 3 columns per row from numeric string

Here is one approach

Names Default To Here( 1 );
theString = "#1#0.93#0.99#2#1.92#1.99#3#2.9#2.99#4#3.86#3.98#5#4.85#4.98";

dt = New Table( "Start",
	add rows( 1 ),
	New Column( "string", character, set each value( theString ) )
);
dt << Text To Columns( delimiter( "#" ), columns( :string ) );
dt << delete columns( :string );
colNames = dt << get column names( string );
For Each( {col}, colNames,
	Column( dt, col ) << Data Type( Numeric, Format( "Best", 12 ) ) <<
	Set Modeling Type( "Continuous" )
);

dt << Stack(
	columns( colNames ),
	Source Label Column( "Label" ),
	Stacked Data Column( "Value" ),
	Number of Series( 3 ),
	Output Table( "Final" )
);

dtFinal = Current Data Table();
dtFinal << delete columns( {:Label, :Label2, :Label3} );
dtFinal:value << set name( "Value 1" );

close( dt, nosave);

txnelson_0-1711109674657.png

 

Jim

Recommended Articles