cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • See how to interactively organize and restructure data for analysis. Register for May 29 webinar, 2pm US ET.

Discussions

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

Search the string in Column and copy the numeric value in 2nd column

I have an Excel Worksheet consisting of two columns, one columns has strings with person name and other column contain age of the person. I have almost a list of 500 person. Is there any way I can automate it?Like using script to assign age based on the person name ?

 

 

 

11 REPLIES 11
jthi
Super User

Re: Search the string in Column and copy the numeric value in 2nd column

If I understand correctly what you want to do (basically join by minimum distance) there are quite a few ways of doing this (kdtable, vptree, loc, distance, addins, ...). Below is one example

Names Default To Here(1);

dt_lookup = New Table("Untitled",
	Add Rows(3),
	Compress File When Saved(1),
	New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([3.8, 4.8, 4])),
	New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([50, 52, 51]))
);

dt = New Table("Untitled",
	Add Rows(3),
	Compress File When Saved(1),
	New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([3.801, 4.801, 4.000, 3.7, 4.802, 4.799]))
);

lookup_values = Column(dt_lookup, "Column 2") << get values;
search_values = Column(dt_lookup, "Column 1") << get values;

dt << New Column("Column 2", Numeric, Continuous, << Set Each Value(
	As Constant(tab = KDTable(search_values););
	{rows, dist} = tab << K nearest rows(1, Matrix(:Column 1));
	lookup_values[rows[1]];
));

 

Below are some demonstrations for other options using matrices

Names Default To Here(1);
lookup_values = [50, 52, 51];
search_values = [3.8, 4.8, 4];
search_val = 4.3;

// These should return row from dt_lookup
kdt = KDTable(search_values);
{kd_rows, kd_dist} = kdt << K nearest rows(1, Matrix(search_val));

vpt = VPTree(search_values);
{vp_rows, vp_dist} = vpt << K nearest rows(1, Matrix(search_val));

dist = Distance(search_values, Matrix(search_val));
lmin_dist = LocMin(dist);

abs_calc = Abs(search_values - search_val);
lmin_abs = LocMin(abs_calc);

show(dist, lmin_dist, abs_calc, lmin_abs, kd_rows, kd_dist, vp_rows, vp_dist);

 
-Jarmo
Craige_Hales
Super User

Re: Search the string in Column and copy the numeric value in 2nd column

interpolate( ) would also be a good choice. 

Craige

Recommended Articles