Replace NaN values with values based on same group and other group?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Kyle Campbell
el 12 de Sept. de 2016
Comentada: Kyle Campbell
el 13 de Sept. de 2016
- table (650,000x20)
- customerID group
- cost group (NaN values throughout)
The table contains 5-7 data lines for each customerID that have the same cost except for one or two NaN cost values. It is obvious to replace the NaN values with the same other given cost values associated with the ID. But I am having trouble.
I was thinking:
Table.cost(isnan(Table.cost)) = Table.customerID(mode(Train.cost));
But this would apply to the entire rather than correct customerID?
0 comentarios
Respuesta aceptada
Teja Muppirala
el 13 de Sept. de 2016
I think this should work.
% Sample data
T = cell2table({'ID1' 100 'aaa';
'ID1' nan 'bbb';
'ID1' nan 'ccc';
'ID2' 200 'ddd';
'ID2' nan 'eee';},'VariableNames',{'customerID','cost','otherStuff'})
% Replace the NaNs with the mode of that group
G = findgroups(T.customerID);
val = splitapply(@(x){mode(x)*ones(size(x))},T.cost,G);
T.cost = cat(1,val{:}) % <----- Fixed now
Más respuestas (1)
Ver también
Categorías
Más información sobre Data Preprocessing en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!