How to generate joint frequency table?
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rouyu Chen
el 12 de Abr. de 2023
Comentada: Rouyu Chen
el 12 de Abr. de 2023
Dear experts,
I have two vectors and I want to make a joint frequency table, I tried tabulate but failed, I was wondering what is wrong with my code, and if there is any other code can help me do this?
Many thanks!
Below is the code I tried:
% Two vectors
Attribute
Assignment_result
% Combine them together
data=table(Attribute,Assignment_result)
% Tabulate
joint_freq=tabulate(data.Attribute,data.Assignment_result)
disp(joint_freq)
But matlab suggests 'too many input arguments'
3 comentarios
Dyuman Joshi
el 12 de Abr. de 2023
tabulate() accepts only 1 input, whereas you are giving 2 inputs to it.
What are you trying to do? Calculating the frequency of 1 vector w.r.t to other?
In any case, please attach your data (use the paperclip icon to do so), and mention the output you want to obtain.
Respuesta aceptada
the cyclist
el 12 de Abr. de 2023
It isn't perfectly clear what you mean, but I think this does what you intend.
% Set the seed, for reproduciblity
rng default
% Two example vectors
vector1 = randi([1, 3], 5, 1);
vector2 = randi([1, 3], 5, 1);
% Combine the vectors into a matrix
data = [vector1, vector2]
% Unique rows and their indices
[unique_rows, ~, row_indices] = unique(data, 'rows');
% Frequency of each unique row
freq = histcounts(row_indices, 1:size(unique_rows,1)+1);
% Combine the unique rows and their frequencies into a table
freq_table = table(unique_rows, freq', 'VariableNames', {'UniqueRows', 'Frequency'})
3 comentarios
the cyclist
el 12 de Abr. de 2023
Ah, you want a cross table:
% Set the seed, for reproduciblity
rng default
% Two example vectors
vector1 = randi([1, 3], 5, 1);
vector2 = randi([1, 3], 5, 1);
[tbl,chi2,p,labels] = crosstab(vector1,vector2)
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!