У меня есть набор данных в виде файла .csv (в основном: выбор вин людей в зависимости от происхождения воспроизводимой музыки).Чтение этого как информационного кадра приводит к тому, что df выглядит так:
Music Wine
1 French French
2 Italian French
3 None Italian
4 Italian Italian
5 French Other
...
В виде таблицы это выглядит так:
Wine
Music Other French Italian
French 35 39 1
None 43 30 11
Italian 35 30 19
Теперь я хочу создать частотную диаграмму ТОЛЬКОотображает относительное распределение покупок, сделанных с помощью Music == "None".Таким образом, в основном я получил бы Other = 0.511904, французский = 0.3571429, итальянский = 0.1309524.
Теперь моя проблема заключается в том, что подмножество этой таблицы не работает.
noMusic <- prop.table(table(data[data$Music == "None"]))
geenMuziekTabel <- prop.table(table(data[data$Music == "None"]))
Оба результата приводят к такому:
[1] 0.144032922 0.004115226 0.045267490 0.078189300 NA NA NA NA
[9] NA NA NA NA NA NA NA NA
[17] NA NA NA NA NA NA NA NA
[25] NA NA NA NA NA NA NA NA
[33] NA NA NA NA NA NA NA NA
[41] NA NA NA NA NA NA NA NA
[49] NA NA NA NA NA NA NA NA
[57] NA NA NA NA NA NA NA NA
[65] NA NA NA NA NA NA NA NA
[73] NA NA NA NA NA NA NA NA
[81] NA NA NA NA
Я подумал: может быть, я должен поднастроить свой фрейм данных ПЕРВЫМ, а затем сделать из него пропорциональную таблицу, но R, кажется, помнит, что были другие данные, и составляет эту таблицу:
Wine
Music Other French Italian
French 0 0 0
None 43 30 11
Italian 0 0 0
Я тоже пробовал разные вещи, но не могу понять.Кто-нибудь знает, что я делаю неправильно?
Редактировать: решение, основанное на принятом ответе, выглядит следующим образом:
noMusicTable <- prop.table(table(musicwine$Wine[musicwine$Music == "None"]))
#noMusicTable <- prop.table(table(subset(musicwine, Music == "None", select = Wine)))
noMusicDF <- as.data.frame(noMusicTable)
# need to declare x and y explicitly; use stat = 'identity' to map bars to y-variable
ggplot(noMusicDF, mapping = aes(x = Var1, y = Freq)) + geom_bar(stat = 'identity', fill='red')