Ich frage eine Follow-up meine Frage here, in der es eine perfekte Lösung gab, die genau das tat, was ich wollte. Aber ich frage mich, wie man diese Methode anwendet oder etwas Ähnliches macht, wenn ich anstelle von Ja/Nein als mögliche Antworten mehr als 2 Antworten hätte, also zum Beispiel ja/nein/vielleicht. Oder wie es sich auf 3+ Antworten verallgemeinern würde.MATLAB - Arbeiten mit Accumarray mit mehreren Kategorien?
Dies ist die Antwort, wie meine Frage umformatiert:
meine Daten sieht wie folgt aus der Annahme:
responses = categorical(randi(3,1250,1),[1 2 3],{'no','yes','maybe'});
race = categorical(randi(5,1250,1),1:5,{'Asian','Black','BHispanic','White','WHispanic'});
Ich möchte gehen und tun das gleiche mit meinem Ja/Nein-Daten, aber mach das mit 3 Möglichkeiten oder mehr. Und das wird nicht mehr am Ende arbeiten:
% convert everything to numeric:
yn = double(responses);
rac = double(race);
% caluculate all frequencies:
data = accumarray(rac,yn-1);
data(:,2) = accumarray(rac,1)-data;
% get the categories names:
races = categories(race);
answers = categories(responses);
% plotting:
bar(data,0.4,'stacked');
ax = gca;
ax.XTickLabel = races; % set the x-axis ticks to the race names
legend(answers) % add a legend for the colors
colormap(lines(3)) % use nicer colors (close to your example)
ylabel('YES/NO/MAYBE')% set the y-axis label
% some other minor fixes:
box off
ax.YGrid = 'on';
Ich bin nicht sicher, ob es noch eine Möglichkeit, die accumarray Methode zu verwenden, um dies zu tun, da es keinen Sinn, aus meinem Verständnis macht dies die Verwendung mit 3 mögliche Antworten. Ich würde es gerne auf n mögliche Antworten verallgemeinern.
UPDATE: Ich untersuche gerade die Kreuztabellenfunktion, die ich bis jetzt überhaupt nicht gefunden habe! Ich denke, das könnte das Feature sein, nach dem ich suche. Hier