comparison of the datasets

3 visualizaciones (últimos 30 días)
MatLab Code N
MatLab Code N el 9 de Abr. de 2019
Comentada: Andrei Bobrov el 10 de Abr. de 2019
Hi,
In the attached excel file, there are two different sheet (X_val and range_val). The X_val sheet contains a series of numbers. The range_val sheet contains R1 and R2 columns which are the lower and higher numbers of a range and the third column in range _val is a X-Id of the repective range. I want a loop which will check folloing stuffs:
  1. Check each values in X-val to see if it is a number which lies bettwen the numbers in range_val column 1 and 2.
  2. if any x-val is a number lying between range_val column 1 and 2, then create a column in X-val and write the corresponding X_ID.
  3. if any-number is not in a required range, then just put NaN next to the X-val.
the final desired output should be a excel sheet which look like:
X-val X_ID
2.11 NaN
3.05 NaN
4.09 NaN
5.6 c
2.5 NaN
6 c
4.2 b
8.9 h
25 NaN
Note: I have a long dataset, given example is just a part of it.
Thanks!!

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 9 de Abr. de 2019
Editada: Andrei Bobrov el 9 de Abr. de 2019
T = readtable('example.xlsx','sheet',1);
T2 = readtable('example.xlsx','sheet',2);
R12 = unique([T2.R1;T2.R2+eps(1e3)]);
C = categorical(repmat({'NoN'},numel(R12),1));
[lo,ii] = ismember(R12,T2.R1);
C(lo) = T2.X_ID(ii(lo));
out = table(T.X,discretize(T.X,[-inf;R12;inf],C([end,1:end])),'v',{'X','X_ID'});
  2 comentarios
MatLab Code N
MatLab Code N el 9 de Abr. de 2019
Thanks!
Guillaume
Guillaume el 9 de Abr. de 2019
Well, that's a bit complicated!

Iniciar sesión para comentar.

Más respuestas (1)

Guillaume
Guillaume el 9 de Abr. de 2019
Editada: Guillaume el 9 de Abr. de 2019
I don't see why 4.2 should get a 'b' id.
X_val = readtable('example.xlsx', 'Sheet', 'X_val')
range_val = readtable('example.xlsx', 'Sheet', 'range_val')
[destrow, idrow] = find(X_val.X >= range_val.R1' & X_val.X <= range_val.R2');
X_val.X_ID(destrow) = range_val.X_ID(idrow)
Note that this leaves empty the cells that don't match instead of putting NaN in them. In general, it's not a good idea to mix text and numbers (even NaN) in the same column.
  2 comentarios
MatLab Code N
MatLab Code N el 9 de Abr. de 2019
Thanks!
Andrei Bobrov
Andrei Bobrov el 10 de Abr. de 2019
+1

Iniciar sesión para comentar.

Categorías

Más información sobre Cell Arrays en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by