unique pairs - frequency appearance
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello, how can I make a table of unique pairs frequency appearance according to a specific column (In the example - Column A)? example in the image:
10 & 10 - mark +1 in the correct cell in the table.
10& 30 - mark +1 in the correct cell in the table
later in "2":
10&20 - mark + in the correct cell in the table.
et cetera
Can you help me bulid the algoritem for a table like this? Thank you!
0 commentaires
Réponses (1)
Guillaume
le 20 Juil 2015
There are two parts to your question. First, the hard bit is going from your table to a list of pairs. The second bit, much easier, is building the histograms of the pair.
One possible way to build the list of pairs:
data = [1 10;1 10;1 30;2 10;2 20; 3 30;3 20;3 10;4 10;4 20;4 30]
%the accumarray below assumes that column 1 is always integer positive from 1.
%column 1 does not need to be ordered:
groupeddata = accumarray(data(:, 1), data(:, 2), [], @(v) {v});
%nchoosek to generate pairs, sort(..., 2) to remove the ordering, unique(...) to remove duplicates:
pairpergroup = cellfun(@(v) unique(sort(nchoosek(v, 2), 2), 'rows'), groupeddata, 'UniformOutput', false);
allpairs = vertcat(pairpergroup{:})
One possible way to build the histogram:
[pair, ~, row] = unique(allpairs, 'rows');
pairdist = [pair, histcounts(row, [unique(row); Inf])']
0 commentaires
Voir également
Catégories
En savoir plus sur Tables dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!